25

cabal repl对于调试库非常有用,但是 ghci 将隐藏所有不依赖于 cabal 包的包。虽然这对于 来说肯定是件好事cabal build,因为repl这意味着我无法从不相关的包中加载某些内容以进行快速测试。

可以通过发出来访问任何包:set -package,但这会从我正在处理的 pacakge 中卸载所有模块,从而破坏cabal repl.

有什么好方法可以简单地加载我已安装但不希望依赖于我的库的包?

4

4 回答 4

33
cabal repl --ghc-option='-package xyz'

这将加载您从中调用cabal repl的包和包xyz

事后做到这一点,即当你已经在 REPL 中并且想要从另一个包加载额外的帮助模块时:

GHCi> :set -package xyz
GHCi> :m +XYZ.Module.You.Suddenly.Need
于 2014-07-15T20:32:41.653 回答
4

当我需要 ghci 范围内的 QuickCheck 库时,我尝试过

cabal repl --ghc-option='-package QuickCheck'

它根本没有用。

以下拯救了我的一天

cabal repl --build-depends "QuickCheck >= 2.14"
于 2020-04-13T22:26:19.953 回答
2

一种方法(虽然不是最佳的)是修改您的 cabal 文件并添加一个手动/错误标志extra_dependency,在条件部分中添加您需要的依赖项build-depends

问题确实是,您需要手动编辑每个要访问hidden库的 cabal 文件,但至少,您的库并不正式依赖于这些库。

否则,您也许可以设置模块路径以查看您的沙盒缓存。

于 2014-07-14T13:32:30.433 回答
2

这只是切线的。我搜索了如何处理stack repl. 使用 Stack,您可以:

stack repl --package xyz

这里repl是 的同义词ghci

于 2019-12-05T15:39:58.620 回答