0

0

如何利用vscode进行Haskell函数式编程【教程】

夢幻星辰

夢幻星辰

发布时间:2026-01-17 12:49:59

|

186人浏览过

|

来源于php中文网

原创

必须安装Haskell(haskell.haskell)和CodeLLDB(调试时需)插件,确保已装ghcup或ghc+cabal,HLS启动失败需手动安装并重启VS Code窗口,标准库跳转需ghcup安装GHC源码包,调试须用CodeLLDB配合cabal build且关闭优化。

如何利用vscode进行haskell函数式编程【教程】

VS Code 装什么插件才能写 Haskell

纯靠 VS Code 默认功能写 Haskell 几乎不可行——没有语法高亮、类型提示、自动补全,连 ghci 都没法内嵌启动。必须装对插件,且顺序和配置有讲究。

核心插件只有两个:Haskell(由 Haskell Tool Stack 团队维护,ID 是 haskell.haskell)和 CodeLLDB(仅当需要调试时)。别装网上搜到的旧版 haskellyhaskell-linter,它们已弃用或与新版 haskell-language-server(简称 HLS)冲突。

  • Haskell 插件会自动下载并管理 haskell-language-server(HLS),但前提是你的系统已安装 ghcup(推荐)或至少有 ghc + cabal;否则插件会卡在“Downloading HLS…”且不报错
  • 如果已有 stack 项目,插件默认优先用 stack 启动 HLS;若用 cabal,需在项目根目录放 hie.yaml 显式声明
  • Windows 用户注意:PowerShell 默认执行策略可能阻止 HLS 启动,临时运行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 可解

打开 .hs 文件后没反应?检查 HLS 是否真在跑

插件图标显示“Haskell”绿色勾不代表 HLS 已就绪。常见现象是:文件打开后无高亮、Ctrl+Click 跳不到定义、悬停看不到类型——本质是 HLS 进程根本没起来,或启动失败后静默退出。

打开 VS Code 命令面板(Ctrl+Shift+P),运行 Haskell: Show Logs,重点看三行:

Starting (haskell-language-server)...
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 2.5.0.0 x86_64 ghc-9.6.3
Started language server:haskell-language-server-9.6.3 --lsp

如果日志停在第一行、或出现 Permission denied / exec: "haskell-language-server-wrapper": executable file not found,说明 HLS 未正确安装。此时手动运行:

ghcup install hls
ghcup set hls 2.5.0.0

再重启 VS Code 窗口(不是重载窗口),否则插件仍读缓存路径。

Flowith
Flowith

一款GPT4驱动的节点式 AI 创作工具

下载

怎么让 Ctrl+Click 跳转到函数定义(比如 map 或 Data.List.sort)

默认情况下,标准库函数跳转会失败,因为 HLS 没加载 GHC 的源码。这不是插件问题,而是本地没源码包。

  • ghcup 安装 GHC 时加 --source 参数(如 ghcup install ghc 9.6.3 --source
  • 已有 GHC 但没源码?运行 ghc-pkg list 查看是否有 ghc-9.6.3 对应的 source 行;没有就补装:ghcup install ghc 9.6.3 --source --no-install-ghc
  • 重启 HLS:命令面板中执行 Haskell: Restart Haskell LSP Server,不要只重载窗口
  • 跳转后若显示 “No definition found”,右下角状态栏点 HLS 图标,确认当前加载的是 base 包而非空项目

调试 main 函数时断点不命中?别用 Run Without Debugging

VS Code 内置的 Run Code(Ctrl+F5)或终端里手动跑 runhaskell 都无法触发断点。Haskell 调试依赖 CodeLLDB + 编译产物,必须走编译执行流。

步骤如下:

  • 确保项目有 .cabal 文件(哪怕是最小的 executable 段),否则 CodeLLDB 找不到入口
  • .vscode/launch.json 中配好:"type": "lldb""request": "launch""program": "./dist-newstyle/build/*/x/main/build/main/main"(路径随 cabal 版本变,可用 cabal exec -- which main 查)
  • 断点只能打在 main = do { ... } 内部表达式上,不能打在顶层函数(如 foo x = x + 1)——LLVM debug info 不支持纯函数断点
  • 首次调试前先 cabal build 一次,否则 launch.json 指向的二进制不存在

Haskell 的惰性求值和优化会让某些断点看似“跳过”,关掉优化更可靠:cabal build --ghc-options="-O0 -g"

相关文章

编程速学教程(入门课程)
编程速学教程(入门课程)

编程怎么学习?编程怎么入门?编程在哪学?编程怎么学才快?不用担心,这里为大家提供了编程速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

410

2023.09.04

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

77

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

41

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

67

2025.11.17

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

10

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
go语言零基础开发内容管理系统
go语言零基础开发内容管理系统

共34课时 | 2.7万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 8.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号