我无法编译我发现阅读leksah tutorial的“Hello World”示例。
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附带了一个Main.hs文件,在您第一次启动leksah时直接加载,其中包含一个完全功能的Hello World迷你项目。它还有极简单元测试计数器部分。非常适合初学者: - )
答案 0 :(得分:15)
模块名称后的paranthesis中的文本是导出列表。这意味着,您必须将所有函数放在要导出的程序中。但除此之外,您还必须在某处定义主要功能。试试这个:
module Main (
main
) where
main = putStrLn "Hello World"
PS:你也可以删除那里的paranthesis及其他任何内容,而不是模块中的任何内容。
答案 1 :(得分:6)
您的第二个示例几乎就在那里,只需从()
旁边删除Main
即可。这是您的模块的导出列表,您已将其设为空(括号之间没有任何内容)。因此,main
未被看到(因为它未被导出)。
您也可以导出main:
module Main (main) where
答案 2 :(得分:6)
“出口一切都是好的做法吗?”当然不。您不希望辅助方法之类的实现细节泄露到外部。另一个例子是值构造函数,因为没有办法为它们进行健全性检查,默认参数等。为了解决这个问题,您只能在模块内部使用它们,并为外部提供方便和安全的初始化功能。