安装QuickCheck后Prelude模块无法加载的解决求助
解决GHCi中Prelude无法加载(base包被隐藏)的问题
临时应急方案
- 在当前GHCi会话中执行:
执行后需要重新导入所需模块(比如:set -package baseimport Test.QuickCheck),因为这个操作会清空当前作用域的所有已加载模块。
永久解决方法
1. 使用项目管理工具(推荐)
如果用Cabal:
- 确保项目的
.cabal文件的build-depends字段包含正确的依赖:build-depends: base >=4.18 && <4.19, QuickCheck >=2.14 - 运行
cabal repl启动GHCi,Cabal会自动配置正确的包环境,无需手动设置包可见性。
如果用Stack:
- 确认
stack.yaml中的resolver对应GHC 9.6.2(比如匹配的lts版本)。 - 运行
stack repl启动GHCi,Stack会自动管理依赖包的可见性。
2. 修改GHCi全局配置
- 在用户主目录下创建或编辑
~/.ghci文件,添加一行:
这样每次启动GHCi都会自动加载base包。注意:这种全局配置可能会影响其他项目,若不同项目依赖不同版本的base,建议优先用项目管理工具隔离环境。:set -package base
额外排查步骤
- 查看base包的状态:
如果输出中ghc-pkg list basebase-4.18.0.0标记为hidden,可以执行以下命令暴露它:
但不建议随意修改全局包状态,优先通过项目管理工具解决。ghc-pkg expose base-4.18.0.0
内容的提问来源于stack exchange,提问作者diegog
相关产品推荐
相关产品推荐

