2025-05-30
luisleee
先要安装 ghc, hls, cabal 和 stack, 最方便的方法不是通过包管理器从软件仓库安装,
而是使用 GHCup 来安装和管理版本. 使用 ghcup 管理版本时注意选择匹配的 ghc 和 hls 版本.
具体安装步骤参照 GHCup官网
安装时注意选项:
hls, cabal 和 stackghcup 管理 stack 使用的 ghc 版本安装过程中或安装完成后可以选用中科大镜像来加速, 需要加速的仓库可能包括 ghcup, hackage 和 stackage.
具体过程参照中科大源的帮助文档, 链接: GHCup, hackage, stackage.
作为构建和包管理工具, cabal 有时可能足够好了, 不过stack可以为不同的项目中配置不同的 Haskell 环境, 让软件在不同机器上的构建更为一致.
Helix 对 Haskell 来说基本上是开箱即用的. 只需要保证 hls 可执行文件的路径在 PATH 中就可以享受代码补全和语法高亮.
使用 hx --health haskell 即可检测 hls 状态.
但是代码格式化工具需要额外进行安装和配置.
这里选用 fourmolu 来格式化代码. 安装方式如下,
cabal install fourmolu
对应配置需要更改 ~/.config/helix/languages.toml, 在其中添加如下内容:
[[language]]
name = "haskell"
formatter = { command = "fourmolu", args = ["--stdin-input-file", "-"] }
保存后重启 Helix, 使用 :format 或缩略的 :fmt 命令即可享受代码格式化.
VS Code 扩展商店有一套官方的 Haskell 插件, 但是体验上略有瑕疵.
选用 stack 进行构建需要等待其下载对应版本的 ghc, 建议 stack new 创建目录后再先安装完成再用 VS Code 打开目录.
选用 cabal 建议先 cabal init 创建工作目录后再打开.
这里需要的配置有:
ghcupGHCup 管理 hls , 而不是使用 PATH 中的 hlssemanticTokens 插件注意, 语言服务启动可能需要一定时间.
添加新文件后代码补全会失效, 需要把新模块名加入 .cabal 配置文件的 exposed-modules (作为库) 或 other-modules (作为可执行文件) 字段, 然后重载窗口, 稍等片刻后语言功能才会生效.
很严肃地说, Kate 用起来都比 VS Code 的 Haskell 插件好用. LSP 开箱即用, 配置同 helix. 代码格式化甚至也无需配置.