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 生态的老手;运行
后用
初始化项目
Stack
:自带 GHC 管理,新手友好;执行
自动匹配推荐 GHC 版本,
创建项目
注意:VSCode 不直接调用 Cabal/Stack 编译,但 HLS 启动时会读取
或
来解析项目结构——文件必须存在且语法正确,否则 HLS 启动失败或功能降级。
HLS 安装与手动指定路径(最易出错环节)
VSCode 的 Haskell 插件默认尝试自动下载 HLS,但常因网络或版本不匹配失败。建议手动安装:
访问
HLS 发布页
,下载对应你 GHC 版本的二进制(如
)
解压后把可执行文件(如
)放入
或任意固定路径
VSCode 设置中搜索
,填入完整路径(例如
)
验证是否生效:打开一个
文件,状态栏右下角应显示 “HLS: Ready”;悬停函数名能看到类型签名,
可跳转定义。
VSCode 插件与关键设置
只需两个插件:
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
Haskell
(by Haskell Language Server)—— 唯一必需,提供语言支持
Bracket Pair Colorizer
(可选)—— 提升括号嵌套可读性,对 Haskell 很实用
推荐设置(在
中添加):
其中
是当前主流格式化器,需单独安装:
或
;启用后保存即自动整理缩进、换行和空格,省去手工排版。
常见问题
速查
遇到“HLS not found”或“type checking stalled”?按顺序排查:
终端执行
,确认输出包含
、
等(缺失则
补上)
检查项目根目录是否存在
或
/
,HLS 靠它们定位模块路径
VSCode 中按
→ 输入 “Haskell: Restart Haskell Language Server”,强制重载
若仍报错,打开命令面板运行 “Developer: Toggle Developer Tools”,看 Console 是否有 TLS 或权限错误(Linux/
mac
OS 常见于 snap 版 VSCode,建议改用 .tar.gz 官方版)
基本上就这些。不复杂但容易忽略版本对齐——GHC、HLS、插件三者版本号最好都来自同一时期发布页,稳比新重要。
cabal updatecabal initstack setupstack new.cabalstack.yamlhaskell-language-server-9.2.8-linux-86_64.tar.xzhaskell-language-server~/binhaskell server path/home/user/bin/haskell-language-server.hsCtrl+Clicksettings.json
"haskell.formattingProvider": "fourmolu",
"haskell.formatOnSave": true,
"files.trimTrailingWhitespace": true,
"editor.rulers": [80],
"editor.suggest.snippetsPreventQuickSuggestions": false
fourmolucabal install fourmolustack install fourmoluhaskell-language-server --probe-toolshlintfourmolucabal install.hie-biosstack.yamlpackage.yamlCtrl+Shift+P