Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 哈斯凯尔·莱克萨你好,世界_Haskell_Leksah - Fatal编程技术网

Haskell 哈斯凯尔·莱克萨你好,世界

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迷你项目。它还具有最小单元测

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

我无法编译我在阅读时发现的“Hello World”示例

编译错误:src\Main.hs:16:5:输入解析错误`

编译错误: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"