【发布时间】:2021-11-29 07:53:21
【问题描述】:
我刚刚开始学习 Haskell。 Prelude 是 described 作为默认模块:
前奏曲:一个标准模块。 Prelude 默认导入到所有 Haskell 模块中
但这并不能解释为什么various documentation 在 REPL 中有“Prelude”作为前缀:
Prelude>
我已经通过 Chocolatey 安装了 the mingw version,我的 REPL 显示“ghci”作为前缀,而不是“Prelude”:
GHCi, version 9.2.1: https://www.haskell.org/ghc/ :? for help
ghci>
Prelude 模块已加载:
GHCi, version 9.2.1: https://www.haskell.org/ghc/ :? for help
ghci> :browse! Prelude
-- imported via Prelude
(!!) :: [a] -> Int -> a
($) :: (a -> b) -> a -> b
...
为什么前缀不同,交互式编译器中的“Prelude”是什么意思?
【问题讨论】:
-
这意味着它加载了
Prelude。例如,如果您import Data.List,它将显示Prelude Data.List>。因此它会列出加载了哪些模块。 -
@WillemVanOnsem 但 Prelude 模块已加载!更新了 Q
-
是的,从 GHC-9.0 开始,它不再列出已加载的模块,并且默认情况下会加载
Prelude,只有当您传递-XNoImplicitPrelude标志时,它才会加载序幕。将它改为ghci>并不意味着不再加载前奏,只是意味着它们不再列出加载的模块,如果您加载了 20 个或更多模块,这通常不是很方便。
标签: haskell