3

これが私の基本的なプログラムですが、関数「main」がモジュール「Main」で定義されていないと述べています。これを修正するにはどうすればよいですか?

ここに私のプログラムがあります

main = do
-- variable
a <- getLine
putStrLn a
4

2 に答える 2

6

コードにインデントがありません。Haskell はインデントを使用してブロックの終了位置を特定します。

main = do
    a <- getLine
    putStrLn a

上記は、コードの適切なインデント形式です。おそらく、私よりもはるかによく説明している記事を読む必要があります。

于 2013-05-26T20:42:15.433 に答える
1

このエラー メッセージは、単にコンパイラが関数の定義を見つけられなかったことを意味しますmain

コンパイルしたプログラムを ghci で操作するのではなく (初心者として行うことをお勧めします) 実行するには、main::IO ().

モジュールに名前を付けない場合module Main where、ファイルの先頭に挿入するのと同じことを自動的に行います。

以外にこのエラーを生成する方法は考えられません

  • --または{-その他のコメント構文で main を誤ってコメントアウトした-}
  • 単語のつづりをmain間違える
  • 誤って空のファイルをコンパイルします。

(
あなたの質問は間違ったインデントを示しているように見えますが、それはこのサイトがタブを 8 文字幅として扱っていないためですmain。質問でコードとしてフォーマットするために 4 つのスペースでインデントしたと思われます。いずれにせよ、コンパイラはそうしませんでしたインデント エラーと一致するエラー メッセージを表示します。

インデントにはタブではなくスペースを使用することをお勧めします。プログラムの空白をデバッグしなければならないのは間違いなくイライラするからです。

ほとんどのエディターは、タブ キーを押すと適切な数のスペースに変換するように構成できるため、文字数の不一致なしで同じ整列機能を使用できます。
)

于 2013-05-26T22:09:38.097 に答える