我尝试了以下内容:
cabal sandbox init
然后制作以下cabal文件。
-- Initial hsource.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: hsource
version: 0.1.0.0
-- synopsis:
-- description:
-- license:
license-file: LICENSE
author: abc
maintainer: abc
-- copyright:
-- category:
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
executable hsource
main-is: main.hs
other-modules:
-- other-extensions:
build-depends: base >=4.7 && <4.8, csv
hs-source-dirs: src
default-language: Haskell2010
现在我安装了CSV包:
cabal install --only-dependencies
现在,当我尝试import Text.CSV
然后C-c C-l
时,我收到以下错误:
Util/RandomTree.hs:7:8-15: Could not find module ‘Text.CSV’ …
Use -v to see a list of the files searched for.
Compilation failed.
所以我的问题是,如果在haskell模式下不支持沙盒,或者我错过了一些让它们工作的步骤?
答案 0 :(得分:1)
确保您拥有:
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
在您的emacs init文件中。
haskell-mode支持不同的GHCi process types。你需要一个使用阴谋的人。
要了解当前应用的流程类型,请使用M-x describe-variable
并输入haskell-process-type
。
我认为haskell模式文档已经过时了;因为,查看源代码时,默认值为auto
,如果能够找到 .cabal-sandbox 目录,则会使用cabal-repl
。否则,它将使用ghci
。
因此,如果您的haskell-process-type
设置为ghci
或auto
并且无法找到您的cabal沙箱,则会看到您发布的错误。如果它当前设置为ghci
,请通过添加以下内容将haskell-process-type
更改为cabal-repl
:
(custom-set-variables
'(haskell-process-type 'cabal-repl))
到您的emacs init文件并重新启动emacs进程。
此外,您始终可以通过打开命令行,导航到包含.cabal文件的目录并输入cabal repl
来确认问题是否特定于emacs。如果可行,那么你的阴谋设置就可以了。