升级macOS到Monterey后Haskell的QuickCheck无法运行问题求助
解决macOS下Haskell QuickCheck模块歧义报错
报错说明
升级到macOS Monterey、更新命令行工具并通过cabal重装QuickCheck后,运行Haskell项目时出现如下歧义报错:
Ambiguous module name ‘Test.QuickCheck’: it was found in multiple packages: QuickCheck-2.14.2 QuickCheck-2.14.2

问题根因
本地环境中同版本的QuickCheck包被重复注册,GHC解析模块时无法确定调用哪个版本的包。
解决步骤
- 第一步:执行命令查看当前注册的所有QuickCheck包,确认重复条目
ghc-pkg list QuickCheck - 第二步:卸载冗余的重复包,优先删除用户目录下注册的版本
运行命令:ghc-pkg unregister --user QuickCheck-2.14.2
如果提示存在依赖冲突无法卸载,添加强制参数:ghc-pkg unregister --user --force QuickCheck-2.14.2
若删除用户目录包后仍存在重复,将命令中--user替换为--global删除全局冗余包即可。 - 第三步:验证修复结果
再次执行ghc-pkg list QuickCheck,确认仅剩下1条QuickCheck-2.14.2的条目,再运行项目代码报错就会消失。
后续规避建议
日常开发优先使用cabal项目级沙箱或stack管理项目依赖,尽量不要直接全局安装Haskell包,可避免出现依赖重复注册的问题。
内容的提问来源于stack exchange,提问作者arnz
相关产品推荐
相关产品推荐

