Haskell 哈斯凯尔·莱克萨你好,世界
今天早上的坏消息是,我愿意尝试使用Leksah(顺便说一句,很好看的应用程序)继续学习haskell 我无法编译我在阅读时发现的“Hello World”示例 编译错误:src\Main.hs:16:5:输入解析错误` 及Haskell 哈斯凯尔·莱克萨你好,世界,haskell,leksah,Haskell,Leksah,今天早上的坏消息是,我愿意尝试使用Leksah(顺便说一句,很好看的应用程序)继续学习haskell 我无法编译我在阅读时发现的“Hello World”示例 编译错误:src\Main.hs:16:5:输入解析错误` 及 编译错误:src\Main.hs:1:0:Main函数Main'未按模块导出Main' 你建议我试试别的什么 重要编辑:现在Leksah附带了一个Main.hs文件,在您第一次启动Leksah时直接加载,其中包含一个功能齐全的Hello World迷你项目。它还具有最小单元测
编译错误:src\Main.hs:1:0:Main函数
Main'未按模块导出Main'
你建议我试试别的什么
重要编辑:现在Leksah附带了一个Main.hs文件,在您第一次启动Leksah时直接加载,其中包含一个功能齐全的Hello World迷你项目。它还具有最小单元测试计数器部分。非常适合初学者:-)您的第二个示例就快到了,只需从
Main
旁边删除()
。这是模块的导出列表,已将其设置为空(括号之间没有任何内容)。因此,main
不可见(因为它没有导出)
您也可以只导出主目录:
module Main (main) where
模块名称后面的文本是导出列表。这意味着,您必须将所有函数放入要导出的程序中。但除此之外,你还必须在某个地方定义你的主要功能。试试这个:
module Main (
main
) where
main = putStrLn "Hello World"
PS:您还可以删除paranthesis和其中的任何内容,而不是导出模块中的任何内容。“导出所有内容是好的做法吗?”当然不是。您不希望像helper方法这样的实现细节泄漏到外部。另一个例子是值构造函数,因为无法对其进行健全性检查、默认参数等。为了克服这一问题,您只能在模块内部使用它们,并为外部提供方便和安全的初始化功能。好吧,我不能确定最佳做法是什么,但是:一般来说,当我有一个合理的好主意,即我已经形成了一个内聚模块时,我会限制导出。对于不希望人们通过定义的函数集直接访问的数据类型,限制导出可能很重要。此外,如果不导出任何内容,编译器可以更好地优化。
module Main (main) where
module Main (
main
) where
main = putStrLn "Hello World"