【问题标题】:Is there a simple way to load extra packages to ghci when invoked via cabal repl?当通过 cabal repl 调用时,是否有一种简单的方法可以将额外的包加载到 ghci?
【发布时间】:2014-09-04 09:25:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: haskell cabal ghc-pkg


    【解决方案1】:

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

    stack repl --package xyz
    

    这里replghci 的同义词。

    【讨论】:

      【解决方案2】:

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

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

      它根本不起作用。

      以下内容拯救了我的一天

      cabal repl --build-depends "QuickCheck >= 2.14"
      

      【讨论】:

        【解决方案3】:
        cabal repl --ghc-option='-package xyz'
        

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

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

        GHCi> :set -package xyz
        GHCi> :m +XYZ.Module.You.Suddenly.Need
        

        【讨论】:

        • 你能不能指定一个本地包的路径,或者一个 git url?
        • 1) cabal repl(我实际上使用了cabal new-repl,希望它可以类似地工作)尝试重建(但失败了); 2):set -package 从当前包中卸载了模块,正如 OP 所提到的,我不知道如何取回它们:(
        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-03-18
          • 2012-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-29
          • 2011-06-03
          相关资源
          最近更新 更多