cabal repl
对于调试库非常有用,但是 ghci 将隐藏所有不依赖于 cabal 包的包。虽然这对于 来说肯定是件好事cabal build
,因为repl
这意味着我无法从不相关的包中加载某些内容以进行快速测试。
我可以通过发出来访问任何包:set -package
,但这会从我正在处理的 pacakge 中卸载所有模块,从而破坏cabal repl
.
有什么好方法可以简单地加载我已安装但不希望依赖于我的库的包?
cabal repl --ghc-option='-package xyz'
这将加载您从中调用cabal repl
的包和包xyz
。
事后做到这一点,即当你已经在 REPL 中并且想要从另一个包加载额外的帮助模块时:
GHCi> :set -package xyz
GHCi> :m +XYZ.Module.You.Suddenly.Need
当我需要 ghci 范围内的 QuickCheck 库时,我尝试过
cabal repl --ghc-option='-package QuickCheck'
它根本没有用。
以下拯救了我的一天
cabal repl --build-depends "QuickCheck >= 2.14"
一种方法(虽然不是最佳的)是修改您的 cabal 文件并添加一个手动/错误标志extra_dependency
,在条件部分中添加您需要的依赖项build-depends
。
问题确实是,您需要手动编辑每个要访问hidden
库的 cabal 文件,但至少,您的库并不正式依赖于这些库。
否则,您也许可以设置模块路径以查看您的沙盒缓存。
这只是切线的。我搜索了如何处理stack repl
. 使用 Stack,您可以:
stack repl --package xyz
这里repl
是 的同义词ghci
。