2

在 Haskell 中,使用 Prelude 加载一些文件后

Prelude> :l xxxFileName

提示音

*Main> xxxx

我不知道“Main”函数来自哪里,因为我没有定义任何名为“Main”的函数。这是 Haskell 命令行环境的特殊状态吗?如何退出“*Main”提示上下文并返回“Prelude>”?

谢谢。

4

1 回答 1

4

那是GHCi 约定。默认情况下,GHCi 将显示您已加载的模块的名称。星号 ( *) 表示您可以访问所有顶级绑定(不在其他绑定中的定义),而不是导出的那些。

如果您没有在文件中指定模块名称,GHCi 将假定其名称为Main

-- Example.hs
add x y = x + y
Prelude> :l Example.hs
*Main>

但是,如果您确实指定了模块名称,GHCi 将改为显示该名称:

-- ProperModule.hs
module ProperModule where

add x y = x + y
Prelude> :l ProperModule.hs
*ProperModule>

要卸载任何其他模块,请使用:m,但请记住,您不能再使用函数xxxFileName.hs了。请注意,Prelude它始终会被加载,除非您已使用-XNoImplicitPrelude.

于 2016-02-18T05:59:42.497 回答