哈斯克尔莱克萨你好世界

时间:2011-01-12 10:13:04

标签: haskell leksah

今天早上的坏消息,我愿意尝试使用Leksah(顺便说一句漂​​亮的应用程序)继续学习haskell。

我无法编译我发现阅读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迷你项目。它还有极简单元测试计数器部分。非常适合初学者: - )

3 个答案:

答案 0 :(得分:15)

模块名称后的paranthesis中的文本是导出列表。这意味着,您必须将所有函数放在要导出的程序中。但除此之外,您还必须在某处定义主要功能。试试这个:

module Main (
  main
) where
main = putStrLn "Hello World"

PS:你也可以删除那里的paranthesis及其他任何内容,而不是模块中的任何内容。

答案 1 :(得分:6)

您的第二个示例几乎就在那里,只需从()旁边删除Main即可。这是您的模块的导出列表,您已将其设为空(括号之间没有任何内容)。因此,main未被看到(因为它未被导出)。

您也可以导出main:

module Main (main) where

答案 2 :(得分:6)

“出口一切都是好的做法吗?”当然不。您不希望辅助方法之类的实现细节泄露到外部。另一个例子是值构造函数,因为没有办法为它们进行健全性检查,默认参数等。为了解决这个问题,您只能在模块内部使用它们,并为外部提供方便和安全的初始化功能。