首页 > 解决方案 > 使用 ALE linter 处理 Haskell 文件时出现不正确的导入错误

问题描述

我正在使用ALE在 vi​​m中对我的 Haskell 文件进行 lint。ALE 检测到 Haskell 平台未附带的任何包的导入错误。我仍然能够运行cabal repl并正确导入这些包。然后我可以将有错误的文件加载到 repl 中,这向我证明我确实采取了正确的步骤来使用这些包。

在使用这些包中的函数时,我会在文件中得到适当的反馈。我当然已经在我的.cabal文件的 build-depends 部分中指定了这些导入。

让我的错误消息被无法识别的导入阻塞是非常烦人的。

是我.vimrc文件中值得注意的行的副本。

标签: haskellvim

解决方案


问题是其中一个短绒不知道阴谋集团。这个问题有据可查here。当您使用 ALE 并且未指定要使用哪些 linter 时,ALE 会继续使用所有这些 linter。

以下是 ALE 自动为您提供的 Haskell 文件的 linter 列表:[cabal_ghc, ghc, ghc_mod, hdevtools, hie, hlint, stack_build, stack_ghc]

在这种情况下,有问题的 linter 是ghc. 要修复错误,请继续将此行添加到您的 .vimrc 文件中:

let g:ale_linters = {'haskell': ['cabal_ghc', 'ghc-mod', 'hdevtools', 'hie', 'hlint', 'stack_build', 'stack_ghc']}

您可以使用此列表中您喜欢的任何 linter。


推荐阅读