我第一次设置 Haskell 开发环境的经历是普遍的还是一次性的?

Is my experience with setting up Haskell dev environment for the first time common or a one-off?

我已经决定 ide 开始 Haskell 并且遇到了一个陌生的生态系统。我已经用简短和详细的版本写下了我目前的结论(现在我意识到我遇到的问题可能是暂时的,将来不会适用,并且意识到下面的文字可能不适合 SO)。

我现在具体想知道的是

短版:

如果这是你第一次接触Haskell并且你想安装Haskell(ghccup、ghc、cabal-install、stack)和一个由Visual Studio组成的开发环境代码,Haskell 语言服务器插件和 HIE。 确保 stack new 根据 (https://docs.haskellstack.org/en/stable/README/#start-your-new-project) 和您正在安装的 HIE 都在解析 ghcup.

安装的相同版本的 GHC

长版:

大家好Haskell各位!

我正在分享我对 Haskell 的尝试,希望能帮助其他人避免一两个菜鸟错误。 就像我问过的所有明智的人一样 google how to install haskell, 这让我进入了下一页 https://www.haskell.org/platform/(我使用的是 macOS 10.13.6)。 我已经按照建议下载了 ghcup,然后安装了 ghc 8.6.5 和 cabal-install 3.0.0.0。 两者都是根据 ghcup 推荐的版本。我能够 ghcup listghcup list -t all,一切看起来都很好。 stack 是推荐的下一个。 这个过程很简单,在堆栈完成它需要做的一切之后我 stack --version 告诉我我有
Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2.

堆栈文档的下一部分让我陷入困境 https://docs.haskellstack.org/en/stable/README/#start-your-new-project。 特别是 stack new my-project 外行人将根据所谓的解析器设置一个新项目。 我此时不知道或不关心的是,默认情况下它会使用 15.2 版本的解析器(在我写这篇文章时是最新的)来设置一个 该项目的“包含电池”的隔离环境(如有任何错误,请纠正我 assumption/terminology)。 我可能不知道的是解析器 15.2“期望”找到 ghc 8.8.2,如果没有找到它,它会做出明智的事情并安装它。 我直觉地理解了这个问题——这是在解决——然后我继续前进(这是在我找到 https://github.com/commercialhaskell/lts-haskell#readme 之前)。

继续 IDE,google 将我带到 haskell-language-server,它还没有准备好迎接黄金时段。下一个最好的事情是 haskell-ide-engine 可以是 idered haskell-language-server 整体的一部分。 由于天真和对目前的体验感到满意,我从源代码构建了他,因为我对 在这一点上用 nix 做任何事情或弄清楚什么是 Visual Studio Code DevContainer。 构建成功,到目前为止我已经安装了HIE、ghcup、ghc、cabal-install、visual studio代码包Haskell语言服务器 我准备开始学习 Haskell。 除了 HIE 拒绝工作 :/.

出了什么问题?

我确实意识到整个情况完全是我自己造成的,我本可以在安装 GHC 并启动 GHCI 后立即开始学习这门语言。我想知道是我走错路了还是大多数人都是这样开始的?

2020 年 7 月 25 日更新

Haskell 语言服务器现在更容易安装,看看这个 post 和它末尾的 video。 https://mpickering.github.io/ide/posts/2020-07-10-ghc-libdir.html

Does the setup I'm describing makes sense to veterans?

haskell 生态系统一开始可能看起来很奇怪(也许确实如此!),开始学习语言基础知识也许最好的选择就是您最后的评论([=23 选择的那个) =]当然,例如)。

我认为问题的关键是大多数 haskell 工具与特定版本的唯一 haskell 编译器耦合,而且如果工具必须解析、格式化或类型检查 haskell源代码(像编辑器和ides需要做的那样)。

但是,作为 haskell-ide-engine 的合作者之一,我希望让初学者尽可能顺利地安装和使用工具。可以使用 stack 和 cabal 完成安装,而且它不是自动的。

您必须 stack install.hs latest 使用该工具支持的最新 ghc 版本安装 hie,目前是 ghc-8.8.2。您还可以使用 stack install.hs hie-${version} f.e stack install.hs hie-8.6.5.

安装特定版本

如果您使用 cabal 安装 hie,安装程序会在 $PATH 中查找 ghc 版本,然后 cabal-hie-install latest 安装找到的最新支持版本。也许你是用 cabal 来安装 hie 的?

您可以安装多个版本的 hie,每个安装都会生成多个可执行文件:例如 hie 本身、hie-8.6hie-8.6.5 以及一个分析您的项目的 hie-wrapper并选择更合适的 hie 版本(如果可用)。

请毫不犹豫地提出如何改进流程的建议。 存在一些问题: