繁体   English   中英

哈斯克尔莱克萨你好世界

[英]haskell leksah hello-world

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

我无法编译我发现阅读leksah教程的“Hello World”示例。

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

compilation-error: src\\Main.hs:16:5: parse error on input ='` 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迷你项目。 它还有极简单元测试计数器部分。 非常适合初学者 :-)

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

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

PS:您还可以删除其中的paranthesis及其他任何内容,而不是要导出模块中的任何内容。

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

你也可以只导出main:

module Main (main) where

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM