25

Haskell 98 规范规定程序的入口点,即函数main,按照惯例应该驻留在名为 Main 的模块中。然而,即使你没有写module Main where在你写的文件的顶部,main当你使用 GHC 时,源代码编译并且看起来工作正常。

问题是:

  1. module Main where写和不写有什么区别?
  2. 哪个是首选?
4

1 回答 1

23

没有真正的区别,module Main (main) where当您自己不指定标头时,将是隐式定义。来自Haskell 98 报告

允许使用仅由模块主体组成的模块的缩写形式。如果使用它,则假定标题为module Main(main) where.

我更喜欢明确的定义而不是隐含的定义,但是,Main.hs这是一个次要的偏好。

于 2012-06-20T03:33:31.650 回答