【问题标题】:What does the "Prelude" prefix mean in GHCi?GHCi 中的“Prelude”前缀是什么意思?
【发布时间】: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


【解决方案1】:

但这并不能解释为什么各种文档在 REPL 中都有“Prelude”作为前缀。

自从 之后,它发生了变化并显示ghci> 提示符。

之前,提示会显示已加载的模块。例如,如果您导入一个模块Data.List,它会将提示更改为:

$ ghci-8.6.5
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Prelude> import Data.List
Prelude Data.List>

如果我们不通过指定-XNoImplicitPrelude 标志来加载Prelude,我们会得到:

$ ghci-8.6.5 -XNoImplicitPrelude
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
>

截至,它显示ghci> 作为提示。通常,如果您必须使用大量模块,提示符会很长,因此使用 GHCi 会很不方便。

您可以使用:set prompt "someprompt> " 将提示设置为其他内容,例如:

$ ghci                                                                                                                                                                                      
GHCi, version 9.0.1: https://www.haskell.org/ghc/  :? for help
ghci> :set prompt "someprompt> "
someprompt> 

提示有一些speciale sequences 以将一些信息显示为@pedrofurla says。如果您希望在较新版本的 GHCi 中恢复旧行为,则将提示设置为 %s> (对于多行提示也设置为 :set prompt-cont "%s| "):

$ ghci
GHCi, version 9.0.1: https://www.haskell.org/ghc/  :? for help
ghci> :set prompt "%s> "
Prelude> import Data.List
Prelude Data.List> 

如果您希望对提示的更改持续到新的 GHCi 会话中,则将命令放入 ~/.ghci(如果不存在则创建它)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2020-07-28
相关资源
最近更新 更多