質問
今朝、悪いニュース、私はLeksah(ちなみに見栄えの良いアプリケーション)を使用して、Haskellを学習し続けることを喜んで使用しました。
「Hello World」の例をコンパイルできませんでした Leksahチュートリアル.
module Main (
main = putStrLn "Hello World"
) where
compilation-error: src\Main.hs:16:5: parse error on input
='`
と
module Main (
) where
main = putStrLn "Hello World"
compilation-error: src\Main.hs:1:0: The main function
Main 'はモジュールによってエクスポートされません Main'
他のことを試してみるように私に何をアドバイスしますか?
重要な編集: 現在、LeksahにはFile Main.hsが出荷され、Leksahを初めて発売するときに直接読み込まれます。また、ミニマリストのユニットテストカウンターパーツもあります。初心者に最適です :-)
解決
モジュール名の後のパラントシスのテキストはエクスポートリストです。これは、そこにエクスポートするプログラムにすべての関数を配置する必要があることを意味します。しかし、これとは別に、どこかで主な機能を定義する必要があります。これを試して:
module Main (
main
) where
main = putStrLn "Hello World"
PS:モジュール内の何よりもエクスポートされるよりも、パラネシスとそこにあるものを削除することもできます。
他のヒント
あなたの2番目の例はほとんどそこにあります、ただ削除してください ()
横から Main
. 。これは、モジュールのエクスポートリストであり、空にしたモジュール(括弧内にありません)。そのための、 main
見られません(エクスポートされていないため)。
メインをエクスポートすることもできます。
module Main (main) where
「すべてをエクスポートするのは良い習慣ですか?」絶対にありません。ヘルパーメソッドのような実装の詳細が外側に漏れたくない。別の例は、価値のあるコンストラクターです。なぜなら、正気のチェック、デフォルトの引数などを持つ方法はないからです。これを克服するには、モジュール内でのみ使用し、外部に便利で安全な初期化関数を提供します。