Haskell 或 GHC 的 main 定义在哪里?

Kot*_*lar 3 standards haskell program-entry-point language-lawyer

在 Haskell 中,编译程序的执行从mainmodule 中的执行开始Main。该函数的类型必须是IO ()

哪个标准或参考文献定义了上述内容?

Haskell 2010Haskell 98没有main正式定义(尽管有几个名为 的函数示例main),而是说:

我们将 Haskell 程序的操作、解释、编译等方式保留为依赖于实现的方式。

GHC 用户指南指导用户创建一个main函数,但从未提及其所需的类型或它是程序执行的开始。有对Main模块的引用,但没有对main函数的引用。

比较C++(参考 C11 标准 (ISO/IEC 9899:2011) 5.1.2.2.1 程序启动 (p: 13)):

每个 C 程序 [...] 都包含一个名为 main 的函数的定义 [...],它是程序的指定开始

哪个标准或参考文献说这main是 Haskell 程序执行的开始?

Nou*_*are 7

\n

Haskell程序是模块的集合,按照惯例,必须调用其中一个模块Main并且必须导出值main。程序的值是module 中标识符的值它必须是某种类型的类型计算(参见第7章)。当程序执行时,将执行计算,其结果(类型为mainMainIO \xcf\x84\xcf\x84main\xcf\x84,并丢弃

\n
\n

https://www.haskell.org/onlinereport/haskell2010/haskellch5.html#dx11-98001

\n