今天早上有坏消息,我愿意尝试使用 Leksah(顺便说一下,看起来不错的应用程序)来继续学习 haskell。

我无法编译我在阅读时发现的“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 functionmain' 未由模块导出 Main'

你会建议我尝试其他什么吗?

重要编辑: 现在 Leksah 附带了一个文件 Main.hs,在您第一次启动 leksah 时直接加载,其中包含一个功能齐全的 Hello World 迷你项目。它还具有极简的单元测试对应部分。非常适合初学者 :-)

有帮助吗?

解决方案

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

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

附:您还可以删除括号和其中的任何内容,而不是模块中的任何内容都将被导出。

其他提示

你的第二个例子就差不多了,只需删除 () 从旁边 Main. 。这是您的模块的导出列表,您已将其清空(括号内没有任何内容)。正因为如此, main 没有看到(因为它没有导出)。

您也可以只导出 main:

module Main (main) where

“出口一切是好习惯吗?”当然不。您不希望像辅助方法这样的实现细节泄漏到外部。另一个例子是值构造函数,因为无法对它们进行健全性检查、默认参数等。为了克服这个问题,您只能在模块内部使用它们,并为外部提供方便且安全的初始化函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top