24
Haskell 98仕様では、プログラムのエントリポイント、つまり関数main
は、慣例によりMainというモジュールに存在するはずです。しかし、ファイルの先頭にmodule Main where
を書き込まなくても、main
を書き込むと、GHCを使用しているときにソースコードがコンパイルされ、正しく動作しているように見えます。Haskellで `module Main where`を書き込むかどうかを指定します。
質問です:
module Main where
を書いて、それを書いていないの違いは何ですか?- どちらがお勧めですか?
違いは、モジュールヘッダーなしでは、 'main'だけがエクスポートされますが、' module Main where'はすべてのトップレベル定義がエクスポートされるということです。 )あなたの目は 'main(main)module'がどこにエクスポートリストが存在しないかを見ていたようです) –
エクスポートリストを'(main) 'にすることは重要です。 – augustss
@DanielFischer @augustss私はそれをサポートするためのドキュメントを見つけることができません。 GHCは、実行可能ファイルを作成する際にその区別をしていないようです。 'module Main(main) 'と' module Main(main)'は同じ最適化とリンクをしているようです。 – jdeseno