有没有一种简单的方法可以在通过cabal repl调用时将额外的包加载到ghci?

时间:2014-07-14 12:51:42

标签: haskell cabal ghc-pkg

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

可以通过发出:set -package访问任何包,但是这将从我正在处理的pacakge中卸载所有模块,从而击败了cabal repl。< / p>

简单地加载我已安装的软件包,但不希望作为我的库的依赖项,这是一个很好的方法吗?

4 个答案:

答案 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 xyzrepl的同义词。)