【问题标题】:A ghci session without Prelude没有 Prelude 的 ghci 会话
【发布时间】:2011-12-05 15:57:17
【问题描述】:

这个问题出现在#haskell irc 聊天中:

如何在不导入前奏的情况下启动 ghci?

可能的答案似乎很明显:

ghci -XNoImplicitPrelude,或者用import Prelude ()加载文件

后者似乎有效,而前者却奇怪地无效。但是,import Prelude () 从 Prelude 导入声明的实例,对吗?有没有更好的方法来创建一个完全不加载 Prelude 的 ghci 会话?

【问题讨论】:

  • ghci -XNoImplicitPrelude 完美运行,只是不适合您认为的用途:它在解释文件时不会隐式加载 Prelude。 =)
  • 你也可以import Prelude ()

标签: haskell ghci


【解决方案1】:
% ghci                    
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> :m -Prelude 
> :i map

Top level: Not in scope: `map'
> :i Eq

Top level: Not in scope: data constructor `Eq'

但是,我不确定 实例 以及 ghci 如何处理它们。

是否有您担心的特定实例?

【讨论】:

  • "您是否担心某个特定的实例?"并不真地。只关心一般。不过,我想:m -Prelude 会杀死实例。
  • 我不确定这些实例是否特别重要,因为相关的类也会被杀死,所以没有办法处理它们。
  • @NikitaVolkov:是的(我觉得很奇怪),但现在-XNoImplicitPrelude 似乎可以按 Dan 的预期工作(至少在 GHC 7.6 中)
【解决方案2】:

接受的答案似乎不再起作用。这在 ghci 8.0.2 中确实有效。

Prelude> :set -XNoImplicitPrelude
Prelude> :m -Prelude
> 

【讨论】:

  • 感谢您的提示!我也用 ghc 8.2.1 确认了这一点。
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 2014-09-19
  • 2011-05-09
  • 2013-01-03
相关资源
最近更新 更多