You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emacs Haskell Intero模式导入Log模块失败,命令行可正常运行

解决Emacs Intero/Haskell Mode找不到本地Log模块的问题

我之前也碰到过一模一样的问题——Intero有时候会因为工作目录或者Stack上下文的识别问题,找不到本地模块,但命令行的Stack却能正常处理。试试下面这几个解决方案:

1. 确认Emacs工作目录在项目根目录

Intero是基于当前工作目录来查找本地模块的,如果你的Emacs当前目录不是homework2(也就是包含Log.hs、LogAnalysis.hs的那个文件夹),肯定会找不到Log模块。

  • 可以按M-x cd,输入你的homework2文件夹路径切换过去,再重新用C-c C-l加载文件试试。
  • 或者下次打开文件时,直接从homework2目录打开,别单独只打开LogAnalysis.hs。

2. 重启Intero会话

有时候Intero的后台会话会缓存旧的路径信息,重启一下就能刷新上下文:

  • 在LogAnalysis.hs的缓冲区里,执行M-x intero-restart,等会话重启完成后,再用C-c C-l加载文件。

3. 手动配置Intero添加模块搜索路径

如果上面的方法都没用,可以强制让Intero在调用Stack时把当前目录加入模块搜索路径。把下面的代码加到你的Emacs配置文件(.emacs或init.el)里:

(setq haskell-process-args-stack-ghci '("-i." "--ghci-options=-ferror-spans"))

保存配置后重启Emacs,再尝试加载文件,这样Intero就会告诉Stack把当前目录(.)纳入模块搜索范围,就能找到Log.hs了。

最后检查模块名一致性

确认Log.hs的第一行是module Log where——Haskell对模块名和文件名的匹配要求严格(包括大小写),如果文件名是Log.hs但模块名写成了log或者其他,也会导致找不到模块。


内容的提问来源于stack exchange,提问作者timokratia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:02:06