这是我的基本程序,但是它声明函数'main'未在模块'Main'中定义,我该如何解决这个问题?
这是我的程序
main = do
-- variable
a <- getLine
putStrLn a
答案 0 :(得分:6)
您的代码缺少缩进,Haskell使用缩进来确定块结束的位置。
main = do
a <- getLine
putStrLn a
上面是代码的正确缩进形式;你应该阅读文章here,它解释得比我好得多。
答案 1 :(得分:1)
此错误消息仅表示编译器未找到函数main
的定义。
要运行已编译的程序,而不是在ghci中进行交互(我建议您作为初学者),您需要main::IO ()
。
如果您没有为模块命名,它会自动执行相当于在文件顶部插入module Main where
的内容。
除了
之外,我想不出任何产生此错误的方法--
或{-
其他评论语法-}
main
(
虽然您的问题似乎显示不正确的缩进,但这是因为此网站不会将标签视为8个字符宽。我怀疑你将main
缩进了四个空格,以便将其格式化为您问题中的代码。在任何情况下,编译器都没有给出与缩进错误一致的错误消息。
我建议您使用空格而不是制表符来缩进,因为必须调试程序的空白是非常恼人的。
大多数编辑器都可以配置为将标签键按到适当数量的空格,为您提供相同的排队功能,但不会出现字符数差异。
)