如何在新的cabal 1.17沙盒中使用GHCi?

39

我一直在尝试使用支持类似于cabal-dev的沙盒的cabal head。但是目前还没有支持cabal-dev ghci的等效选项,而且根据官方网站的说法,下一个版本也不会支持。

是否有什么方法可以解决这个问题,并获得类似于cabal-dev ghci的功能?


2
很不幸,目前没有易于使用的cabal-dev ghci替代品。 Duncan计划在某个时候合并Sam Anklesaria的GSoC 2011补丁,实现cabal repl(他已经合并了一些准备工作),但是目前它们还没有被合并到HEAD中。一旦实现了cabal repl,沙盒也将支持它。 - Mikhail Glushenkov
谢谢提供的信息!我也可以接受难以使用的解决方案。 - jberryman
1个回答

40

编辑(2013年8月):最近已经合并了cabal repl补丁。 这个功能将成为下一个版本的一部分。


截至本文撰写时,没有易于使用的cabal-dev ghci类似工具。 我们计划在未来添加cabal repl命令 - 但是,目前Cabal HEAD中没有此功能。

同时,您可以尝试以下解决方法:

$ cd $YOUR_PACKAGE_DIR

# For GHC >= 7.6
$ ghci -no-user-package-db -package-db .cabal-sandbox/i386-linux-ghc-7.6.1-packages.conf.d

# For GHC < 7.6
$ ghci -no-user-package-conf -package-conf .cabal-sandbox/i386-linux-ghc-7.4.2-packages.conf.d

这并不会立即使得你的包的模块在ghci中可用 - 你需要使用:limport加载它们(在自定义预处理器和CPP存在的情况下,这可能会出现问题)。


7
请注意,从 cabal 1.18 版本开始,cabal repl 命令可用:http://coldwa.st/e/blog/2013-08-21-Cabal-1-18.html 这意味着当你的 cabal 版本 >= 1.18 时,你只需在项目目录中键入 cabal repl 命令即可使用沙盒(如果已启用)。 - Sven Koschnicke
另外,提醒一下,i386-linux...是特定于您的操作系统和ghc版本的 - 我有不同的ghc版本和操作系统,因此我必须为我的conf.d文件输入不同的前缀。这对其他人可能很明显,但对于我这个新手来说还不太清楚。 - Matt McNaughton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接