VSCode for Haskell:函数式编程环境配置

3次阅读

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

VSCode for Haskell:函数式编程环境配置

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 启动时会读取 .cabalstack.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 插件与关键设置

只需两个插件:

VSCode for Haskell:函数式编程环境配置

php配置文件php.ini的中文注释版

php配置文件php.ini的中文注释版是一本由多位作者编著的有关PHP内部实现的开源书籍。从环境准备到代码实现,从实现过程到细节延展,从变量、函数、对象到内存、Zend虚拟机…… 如此种种,道尽PHP之风流。

VSCode for Haskell:函数式编程环境配置 376

查看详情 VSCode for Haskell:函数式编程环境配置

  • 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 fourmolustack install fourmolu;启用后保存即自动整理缩进、换行和空格,省去手工排版。

常见问题速查

遇到“HLS not found”或“type checking stalled”?按顺序排查:

  • 终端执行 haskell-language-server --probe-tools,确认输出包含 hlintfourmolu 等(缺失则 cabal install 补上)
  • 检查项目根目录是否存在 .hie-biosstack.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、插件三者版本号最好都来自同一时期发布页,稳比新重要。

text=ZqhQzanResources