vscode配置haskell开发需三步:换中科大镜像安装ghcup与hls,手动设置haskell.serverexecutablepath为绝对路径(非wrapper),且项目根目录必须含.cabal或stack.yaml并以open folder方式打开。

VSCode 本身不带 Haskell 支持,装完插件却没类型提示、跳转失效、状态栏卡在 “Starting…”——八成是 haskell-language-server 没被正确加载,而不是插件没装或代码写错了。
ghcup 安装必须换中科大镜像,否则大概率卡死或校验失败
官方源在国内基本不可用,curl --proto='https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh 这条命令在多数情况下会卡在 GHC 下载阶段,甚至下载损坏导致后续校验失败。
- Windows 用户:在 PowerShell(非管理员)中先运行
$env:BOOTSTRAP_HASKELL_YAML = 'https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-latest.yaml',再执行完整安装脚本(含Invoke-WebRequest那一长串) - Linux/macOS 用户:安装后立刻运行
ghcup set mirror https://mirrors.ustc.edu.cn/ghcup/ - 安装时务必勾选 HLS、指定非系统盘路径(如
D:\ghcup或~/ghcup),并允许自动写入 PATH
VSCode 必须手动填 haskell.serverExecutablePath,不能依赖自动探测
Haskell 插件(ID:Haskell.haskell)经常静默降级为仅语法高亮,原因就是它默认只找 haskell-language-server,既不认 haskell-language-server-wrapper,也不 fallback 到 ~/.ghcup/bin/ 路径。
- 终端里运行
which haskell-language-server(macOS/Linux)或Get-Command haskell-language-server(PowerShell)确认路径 - VSCode 设置中搜索
haskell.serverExecutablePath,填入**绝对路径**,例如:/home/username/.ghcup/bin/haskell-language-server或C:\ghcup\bin\haskell-language-server.exe - 别填
haskell-language-server-wrapper——它只是个调度器,VSCode 不支持 - 改完设置后必须**重启整个 VSCode 窗口**(不是重载窗口),否则不生效
项目根目录必须有 .cabal 或 stack.yaml,且要用 Open Folder 打开
HLS 不识别单个 .hs 文件,也不处理空文件夹。哪怕工具链全装对了,只双击打开一个 Main.hs,它就只是个带高亮的文本编辑器。
- 快速验证:终端进目标目录,运行
cabal init -n生成最小.cabal;或用stack new myproj创建标准项目 - VSCode 中必须使用 File → Open Folder 打开项目根目录,而非 Open File
- 常见误操作:
code .打开的是src/子目录;.cabal被手动删掉;Stack 项目没运行过stack build导致.stack-work/为空 - 成功标志:右下角状态栏显示 “HLS ready” 并附带 GHC 版本号;输出面板 → Haskell 标签页出现
Run entered for haskell-language-server
最容易被忽略的是三件事:镜像源没换导致 ghcup 安装半残、haskell.serverExecutablePath 填了 wrapper 而不是 server、VSCode 打开方式错把子目录当根目录——这三处任一出错,HLS 就不会真正启动。











