VSCode不执行Haskell代码,运行依赖runhaskell/ghci或构建后可执行文件;需确保工具链安装正确、PATH配置无误、项目结构合法(含.cabal或stack.yaml),并手动配置tasks.json任务。

HLS 装好了 ≠ 代码能运行。VSCode 本身不执行 Haskell,真正跑起来靠的是 runhaskell、ghci 或构建后的可执行文件;插件只负责调用它们。装对工具链、PATH 正确、项目结构合法,才是运行的前提。
runhaskell 命令找不到?先查 PATH 和安装方式
VSCode 集成终端里执行 runhaskell --version 报 command not found,说明底层工具没装或没进 PATH。
- macOS/Linux 用户别只用
brew install ghc——它通常不带runhaskell;推荐用ghcup安装,它会一并部署完整工具集 - Windows 用户注意:PowerShell 默认禁止脚本执行,且新终端可能不加载
ghcup写入的环境变量;可在 VSCode 终端里手动运行$env:PATH += ";C:\ghcup\bin"临时补救 - 验证路径:终端运行
which runhaskell(Linux/macOS)或Get-Command runhaskell(PowerShell),把输出路径加到系统 PATH,或直接在tasks.json里填绝对路径(如/home/you/.ghcup/bin/runhaskell)
点“运行”没反应?你可能没配 tasks.json
VSCode 的 Haskell 插件默认不提供运行按钮,F5 也是灰色的——它不自带运行能力,必须手动配置任务。
- 按
Ctrl+Shift+P→ 输入Tasks: Configure Task→ 选Create tasks.json from template→Others - 替换内容为以下最小可用配置:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Haskell File",
"type": "shell",
"command": "runhaskell",
"args": ["${file}"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": true
},
"problemMatcher": []
}
]
}
-
${file}是当前打开的 .hs 文件路径,支持任意位置的单文件,不要求有.cabal或stack.yaml - 保存后,按
Ctrl+Shift+B即可触发;也可右键文件 →Run Task→ 选该任务
项目级运行失败?检查 .cabal 或 stack.yaml 是否被识别
单文件 runhaskell 解决不了真实项目问题。带依赖的项目必须让 HLS 加载上下文,否则类型检查都错,更别说运行。
- 确保项目根目录含
.cabal(不是cabal.project)或stack.yaml;文件名要匹配:比如项目叫myproj,那.cabal应为myproj.cabal - Stack 用户务必先运行一次
stack build,生成.stack-work/目录,否则 HLS 可能拒绝加载 - VSCode 必须用
File → Open Folder打开最外层目录(如myproj/),不能打开myproj/src/或双击单个Main.hs - 如果
cabal init -n生成的.cabal被删了,或stack.yaml拼写错误(比如写成stack.yml),HLS 就静默退出,状态栏不会显示HLS ready
最容易被忽略的是三件事:PATH 里没有 runhaskell、tasks.json 没配或命令路径不对、VSCode 打开的不是项目根目录——这三处任一出错,“运行”就只会卡住或报错,和插件无关。


















