cabal repl
对于调试库非常有用,但是ghci将隐藏所有不与cabal包相关的包。虽然这对于cabal build
来说肯定是件好事,但对于repl
来说,这意味着我无法从不相关的软件包加载某些内容以进行快速测试。
我可以通过发出:set -package
来访问任何包,但是这将从我正在处理的pacakge中卸载所有模块,从而击败了cabal repl
。< / p>
简单地加载我已安装的软件包,但不希望作为我的库的依赖项,这是一个很好的方法吗?
答案 0 :(得分:25)
cabal repl --ghc-option='-package xyz'
这将加载您正在调用的cabal repl
包和xyz
包。
事后要做到这一点,即当你已经在REPL中并希望从另一个包中加载一个额外的帮助模块时:
GHCi> :set -package xyz
GHCi> :m +XYZ.Module.You.Suddenly.Need
答案 1 :(得分:2)
一种方法(尽管不是最佳的)是修改您的cabal文件并添加手动/假标志extra_dependency
,在条件build-depends
部分中添加所需的依赖项。
问题确实是,您需要手动编辑每个要访问hidden
库的cabal文件,但至少,您的库并不正式依赖这些库。
否则,您可以设置模块路径以查看沙箱缓存。
答案 2 :(得分:2)
当我需要ghci范围内的QuickCheck库时,我尝试过
cabal repl --ghc-option='-package QuickCheck'
它根本不起作用。
以下内容挽救了我的生活
cabal repl --build-depends "QuickCheck >= 2.14"
答案 3 :(得分:0)
由于我在寻找如何使用pidof
而不是stack repl
时找到了进行此问题的方法,因此以下答案仅是切线的:使用Stack可以执行cabal repl
。 (这里stack repl --package xyz
与repl
的同义词。)