首页 > 解决方案 > 如何让 HIE 检测通过堆栈安装的脚本包

问题描述

我刚刚开始学习如何使用 haskell 编写脚本,我有这样的东西:

#!/usr/bin/env stack
-- stack --resolver lts-14.13 script
{-# LANGUAGE OverloadedStrings #-}
import Turtle

main :: IO ()
main = echo "hello"

当我使用 运行它时stack script.hs,它会自动神奇地安装turtle 并打印“hello”。但是,我的编辑器在导入行上给了我这个错误:

[ghcmod] [E] Could not find module ‘Turtle’

这对我来说很有意义,因为我安装的 hie-wrapper (从源代码,如果重要的话)不知道堆栈在哪里安装了 turtle 包。

我连接 HIE 的方式是这样的,使用 coc.nvim:

  "languageserver": {
        "haskell": {
            "command": "hie-wrapper",
            "rootPatterns": [
                ".stack.yaml",
                "cabal.config",
                "package.yaml"
            ],
            "filetypes": [
                "hs",
                "lhs",
                "haskell"
            ],
            "initializationOptions": {
                "languageServerHaskell": {
                }
            },
        }
  },

是否有一些标志或什么我可以传递给 hie-wrapper 以使其与 Haskell 脚本很好地配合,即。检测包裹?非常感谢任何能让这些东西更清楚地组合在一起的答案,ghc/hie/hie-wrapper/stack/cabal 目前对我来说是一个大黑匣子,这使得它难以调试。

标签: haskellghchaskell-stackhaskell-ide-engine

解决方案


推荐阅读