Haskell中消除Data.Matrix包歧义问题的解决方法
解决Data.Matrix模块歧义问题的可行方案
1. 编译时明确指定包版本
直接在编译命令里指定要使用的matrix版本,跳过环境中的歧义:
ghc -package matrix-0.3.6.3 app/MainEquations.hs
如果是用cabal管理项目,就在项目的.cabal文件里的build-depends字段明确锁死版本:
build-depends: base >=4.16 && <5, matrix ==0.3.6.3
2. 重置cabal用户环境
cabal install --lib安装的包会存在用户环境里,有时候ghc-pkg检测不到但实际有重复实例,直接清理重置:
cabal user-config reset rm -rf ~/.ghc rm -rf ~/.cabal/store
之后重新安装你需要的带profiling的版本:
cabal install --lib matrix --enable-profiling
3. 切换到项目本地依赖管理(推荐)
别再用全局的cabal install --lib了,初始化一个本地cabal项目,让依赖和项目绑定:
cabal init --simple
在生成的.cabal文件里添加matrix依赖,之后用cabal build或cabal run编译运行,这样完全隔离全局环境的冲突。
4. 手动指定包ID编译
如果能找到包的具体ID(可以去~/.cabal/store/ghc-9.4.8/下的matrix目录里找带哈希的文件夹名),编译时直接指定包ID:
ghc -package-id matrix-0.3.6.3-<你的哈希值> app/MainEquations.hs
内容的提问来源于stack exchange,提问作者user29612357
相关产品推荐
相关产品推荐

