我可以stack build
来自命令行的项目但是当我在emacs中尝试C-c C-l
时((custom-set-variables '(haskell-process-type 'stack-ghci))
)我得到一个错误,我导入的所有包模块都可以'找到了。
/home/amcp011/bec/amcp011/accelerate/gpe/src/Numeric/GPE/Utils.hs:30:1: error:
Failed to load interface for ‘Data.Array.Accelerate’
Locations searched:
Data/Array/Accelerate.hs
Data/Array/Accelerate.lhs
Data/Array/Accelerate.hsig
Data/Array/Accelerate.lhsig
/home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hs
/home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhs
/home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hsig
/home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhsig
gpe.cabal
:
build-depends: base >= 4.7 && < 5
, bytestring
, bytestring-conversion
, mtl
, time
, filepath
, directory
, accelerate
, accelerate-io
stack.yaml
:
extra-deps: [accelerate-1.0.0.0
,accelerate-io-1.0.0.0
]
答案 0 :(得分:5)
我能够使用stack build
编译您的项目(当然,在安装了一些系统范围的依赖项,如llvm,cuda,fftw3等)之后,在emacs中加载C-c C-l
。 / p>
以下是适用于我的最小emacs配置:
(defun haskell-mode-setup ()
(setq haskell-process-type 'stack-ghci))
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'haskell-mode-setup)
我能够复制您遇到的问题的唯一方法是使用inf-haskell-mode
,而不是interactive-haskell-mode
,以及简单地通过设置
(setq haskell-process-type 'ghci)
。因此,emacs可能无法找到stack
。
我建议尝试让haskell模式知道堆栈的位置,以防它安装在非公共位置:(setq haskell-process-path-stack "/path/to/stack")
。
或者,我已经解决了过去与$PATH
环境变量相关的一些问题,这些问题与为当前用户设置的不同,而是系统范围内使用的问题。只需安装exec-path-from-shell
emacs包,然后将(exec-path-from-shell-initialize)
添加到~/.emacs
。
另外,如果你还没有完成它,那么检查haskell-mode日志可能会很有用。将(setq haskell-process-log t)
添加到haskell-mode-setup
,这将导致带有日志的额外缓冲区。
注意:
stack.yaml
中删除几行,即包含本地目录/home/amcp011/local/
的行,这些行不包含在repo中并使用我的系统安装{{1而不是gcc
中的一个。RHEL6.3
之外的其他一些emacs软件包,它们也可能是问题的原因。我已经使用haskell-mode
和intero
对其进行了测试,没有任何问题。flycheck
和stack upgrade
,这可能会有所帮助。我已在haskell-mode
stack-1.5.1
和haskell-mode-20170824.1124
进行了测试