haskell - Prelude(Haskell)加载模块后如何退出 "Main"状态?

标签 haskell load program-entry-point haskell-prelude

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

Prelude> :l xxxFileName

提示符变为

*Main> xxxx

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

谢谢。

最佳答案

这是一个 GHCi convention 。默认情况下,GHCi 将显示您已加载的模块的名称。星号 (*) 表示您有权访问所有顶级绑定(bind)(不在其他绑定(bind)内部的定义),但不能访问导出的绑定(bind)。

如果您没有在文件中指定模块名称,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 启动 GHCi。

关于haskell - Prelude(Haskell)加载模块后如何退出 "Main"状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473853/

相关文章:

javascript - 当它们进入视口(viewport)时加载 div、图像和/或脚本

python - 调用 if __name__ == '__main__' : in one module from a function in another module

c++ - 运行代码时是否有可能在 main() 之前调用其他方法/指令

parsing - 我的解析器是懒惰的吗?

haskell - Haskell 函数中针对类型类实例的模式匹配

JavaScript 本地应用程序保存/加载文件?

Javascript 函数在整个页面加载后加载 DIV

java - 循环线程

arrays - Haskell Chesshs 和数组错误如何定义 `board::Array (Int, Int) (Maybe Piece)`

haskell - 在 Scotty/Haskell 中捕获异常