vscode 搭配 Haskell 的核心是 GHC、Cabal/Stack 与 haskell-language-server(HLS)三者版本兼容;需手动安装匹配 GHC 版本的 HLS 并在 VSCode 中指定路径,配合 Haskell 插件与 fourmolu 格式化器即可实现完整语言支持。

VSCode 搭配 Haskell 是一套轻量但足够专业的函数式编程环境,关键不在装得多,而在核心工具链协同稳定——haskell-language-server(HLS)是绝对核心,GHC、Cabal/Stack、HLS 三者版本需彼此兼容,否则补全、跳转、类型提示基本失效。
基础依赖:GHC + 构建工具(Cabal 或 Stack)
先确认本地已安装 GHC(≥9.2.0 推荐),再选一种构建方式:
- Cabal:系统级安装更轻量,适合熟悉 Haskell 生态的老手;运行
cabal update后用cabal init初始化项目 - Stack:自带 GHC 管理,新手友好;执行
stack setup自动匹配推荐 GHC 版本,stack new创建项目
注意:VSCode 不直接调用 Cabal/Stack 编译,但 HLS 启动时会读取 .cabal 或 stack.yaml 来解析项目结构——文件必须存在且语法正确,否则 HLS 启动失败或功能降级。
HLS 安装与手动指定路径(最易出错环节)
VSCode 的 Haskell 插件默认尝试自动下载 HLS,但常因网络或版本不匹配失败。建议手动安装:
- 访问 HLS 发布页,下载对应你 GHC 版本的二进制(如
haskell-language-server-9.2.8-linux-86_64.tar.xz) - 解压后把可执行文件(如
haskell-language-server)放入~/bin或任意固定路径 - VSCode 设置中搜索
haskell server path,填入完整路径(例如/home/user/bin/haskell-language-server)
验证是否生效:打开一个 .hs 文件,状态栏右下角应显示 “HLS: Ready”;悬停函数名能看到类型签名,Ctrl+Click 可跳转定义。
VSCode 插件与关键设置
只需两个插件:
php配置文件php.ini的中文注释版是一本由多位作者编著的有关PHP内部实现的开源书籍。从环境准备到代码实现,从实现过程到细节延展,从变量、函数、对象到内存、Zend虚拟机…… 如此种种,道尽PHP之风流。
376 - Haskell(by Haskell Language Server)—— 唯一必需,提供语言支持
- Bracket Pair Colorizer(可选)—— 提升括号嵌套可读性,对 Haskell 很实用
推荐设置(在 settings.json 中添加):
"haskell.formattingProvider": "fourmolu", "haskell.formatOnSave": true, "files.trimTrailingWhitespace": true, "editor.rulers": [80], "editor.suggest.snippetsPreventQuickSuggestions": false
其中 fourmolu 是当前主流格式化器,需单独安装:cabal install fourmolu 或 stack install fourmolu;启用后保存即自动整理缩进、换行和空格,省去手工排版。
常见问题速查
遇到“HLS not found”或“type checking stalled”?按顺序排查:
- 终端执行
haskell-language-server --probe-tools,确认输出包含hlint、fourmolu等(缺失则cabal install补上) - 检查项目根目录是否存在
.hie-bios或stack.yaml/package.yaml,HLS 靠它们定位模块路径 - VSCode 中按
Ctrl+Shift+P→ 输入 “Haskell: Restart Haskell Language Server”,强制重载 - 若仍报错,打开命令面板运行 “Developer: Toggle Developer Tools”,看 console 是否有 TLS 或权限错误(Linux/macOS 常见于 snap 版 VSCode,建议改用 .tar.gz 官方版)
基本上就这些。不复杂但容易忽略版本对齐——GHC、HLS、插件三者版本号最好都来自同一时期发布页,稳比新重要。