GHCi中「Prelude」前缀代表什么?不同版本提示符存在差异的原因?
问题解答
1. GHCi提示符前缀存在版本差异的原因
GHC 8.2及以上版本修改了GHCi的默认提示符配置:
- 8.2以前的旧版本默认采用动态模块名提示符规则,会把当前会话导入的顶层模块名展示在提示符上,默认仅加载Prelude时就显示
Prelude> - 8.2及以后的新版本为了简化显示,默认把提示符改成了固定的
ghci>,该变更和Prelude是否正常加载没有关联
2. "Prelude"前缀的具体含义
旧版提示符里的Prelude是当前GHCi会话顶层作用域已导入的模块列表的提示:
- 仅默认导入Prelude时,提示符就显示为
Prelude> - 如果额外导入了其他模块,比如执行
import Data.Map,提示符会同步更新为Prelude Data.Map> - 如果切换作用域到自定义的模块MyModule,提示符会变成
MyModule>
如果需要恢复旧版本的动态模块名提示符,可以在GHCi会话中执行命令:
:set prompt "%s> "
如果需要永久生效,可以把上述配置写入GHCi配置文件:Windows系统路径为%APPDATA%\ghc\ghci.conf,类Unix系统路径为~/.ghci。
内容的提问来源于stack exchange,提问作者enkryptor
相关产品推荐
相关产品推荐

