gpt4 book ai didi

haskell - 在 emacs 中 stack-ghci 无法加载接口(interface)文件,但命令行中的 `stack build` 可以

转载 作者:行者123 更新时间:2023-12-02 12:01:08 27 4
gpt4 key购买 nike

我可以从命令行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
]

最佳答案

我能够使用stack build编译您的项目(当然,在安装了一些系统范围的依赖项之后,如llvm、cuda、fftw3等)并使用C-c C-l加载它。 在 emacs 中。

这是对我有用的最小 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-mode 知道堆栈在哪里,以防它安装在非常见位置: (setq haskell-process-path-stack "/path/to/stack “)

或者,我过去解决了一些与 $PATH 环境变量相关的问题,该环境变量与为当前用户设置的环境变量不同,而是在系统范围内使用的环境变量。只需安装 exec-path-from-shell emacs 包并将 (exec-path-from-shell-initialize) 添加到 ~/.emacs.

此外,如果您还没有这样做,检查 haskell 模式日志可能会很有用。将 (setq haskell-process-log t) 添加到 haskell-mode-setup,这将导致日志产生额外的缓冲区。

注释:

  • 为了编译您的包,我必须从 stack.yaml 中删除几行,即包含本地目录 /home/amcp011/local/ 的行,其中不包含在存储库中,请使用我的系统安装的 gcc 而不是 RHEL6.3 中的系统。
  • 如果您使用除 haskell-mode 之外的其他 emacs 软件包,它们也可能是问题的原因。我已经使用 interoflycheck 对其进行了测试,没有任何问题。
  • 尝试升级到最新的堆栈升级haskell-mode,也许会有帮助。我已经在 emacs-25.2.2
  • 上使用 stack-1.5.1haskell-mode-20170824.1124 进行了测试

关于haskell - 在 emacs 中 stack-ghci 无法加载接口(interface)文件,但命令行中的 `stack build` 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684261/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com