Haskell函数'main'没有定义?

时间:2013-05-26 20:32:09

标签: haskell haskell-platform

这是我的基本程序,但是它声明函数'main'未在模块'Main'中定义,我该如何解决这个问题?

这是我的程序

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

2 个答案:

答案 0 :(得分:6)

您的代码缺少缩进,Haskell使用缩进来确定块结束的位置。

main = do
    a <- getLine
    putStrLn a

上面是代码的正确缩进形式;你应该阅读文章here,它解释得比我好得多。

答案 1 :(得分:1)

此错误消息仅表示编译器未找到函数main的定义。

要运行已编译的程序,而不是在ghci中进行交互(我建议您作为初学者),您需要main::IO ()

如果您没有为模块命名,它会自动执行相当于在文件顶部插入module Main where的内容。

除了

之外,我想不出任何产生此错误的方法
  • 使用--{-其他评论语法-}
  • 意外地评论了主要内容
  • 错误拼写单词main
  • 意外编译一个空文件。


虽然您的问题似乎显示不正确的缩进,但这是因为此网站不会将标签视为8个字符宽。我怀疑你将main缩进了四个空格,以便将其格式化为您问题中的代码。在任何情况下,编译器都没有给出与缩进错误一致的错误消息。

我建议您使用空格而不是制表符来缩进,因为必须调试程序的空白是非常恼人的。

大多数编辑器都可以配置为将标签键按到适当数量的空格,为您提供相同的排队功能,但不会出现字符数差异。