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四个空格以使其在您的问题中格式化为代码。无论如何编译器都没有给出与缩进错误一致的错误信息。

我想建议您使用空格而不是制表符来进行缩进,因为必须调试程序的空格总是很烦人。

大多数编辑器都可以配置为将 Tab 键按下转换为适当数量的空格,从而为您提供相同的 line-it-up 功能,而不会出现字符数差异。
)

于 2013-05-26T22:09:38.097 回答