cabal repl启动时.ghci中:m +LinAlg未执行的问题求助
问题原因与解决办法
核心问题
cabal repl 默认会启动一个隔离的项目环境,为避免全局配置干扰项目依赖的正确性,它会忽略用户的 .ghci 文件(无论放在项目目录还是主目录),这就是你配置的 :m +LinAlg 不生效的主要原因。另外需确认 LinAlg 模块是否属于当前项目源码,或已正确添加为项目依赖。
解决方法
1. 加载本地ghci脚本
在项目根目录创建 .ghci-local 文件,写入你的配置:
:set -fno-warn-incomplete-patterns :m +LinAlg
启动repl时指定加载该脚本:
cabal repl --ghci-options="-ghci-script .ghci-local"
2. 配置cabal项目自动加载脚本
修改项目 .cabal 文件,在对应 executable 段的 ghc-options 中添加脚本加载指令:
executable your-project-name -- 其他配置项... ghc-options: -ghci-script .ghci
此后每次运行 cabal repl,都会自动加载项目根目录的 .ghci 文件。
3. 确认模块可见性
- 若
LinAlg是外部依赖,需在.cabal文件的build-depends里声明对应包:build-depends: base >=4.14 && <5, linalg-package-name - 若为项目内部模块,要确保它在
hs-source-dirs指定的源码路径下,且模块名称大小写完全匹配(Haskell模块名区分大小写)。
内容的提问来源于stack exchange,提问作者user855443
相关产品推荐
相关产品推荐

