2012-11-30 30 views
7

我刚刚意识到我可以定义我自己的Prelude模块并仔细控制它的输出。 这被认为是不好的做法?自定义序曲模块 - 坏主意?

优点:

  • 无需在大型项目重复导入一个 “通用” 模块。

  • 无需编写“import prelude hiding(catch)”。

+3

一个明显的缺点是可读性。人们期望* Prelude函数是Prelude函数,除非明确隐藏。如果没有“隐藏(地图)”,遇到不是普通地图的“地图”听起来会很不舒服。 – gspr

+2

我在我的一些项目中使用'basic-prelude'。我认为每个项目的定制前奏可能会太过分,但如果某些东西能够流行起来,我会支持的。 – singpolyma

+0

@singpolyma感谢“基本前奏”概念! –

回答

9

一般来说它是一个糟糕的主意,因为你最终写在你自己的成语代码,是不是一件容易的事被别人维护。

要与他人沟通,您需要符号的共享语言。 Prelude是我们的核心语言,所以如果您重新定义它,期待混淆。

此规则的例外情况是在开发嵌入式特定于领域的语言时。在那里,制作一个自定义的Prelude完全是一个好主意,并且确实为什么有可能首先重新定义Prelude(以及内置语法)。

尽一切可能拥有自己的附加模块,但不要覆盖Prelude。