Sublime Text配置Haskell运行环境_Sublime Text语法增强提示设置【函数】

雨晨大大_7769

雨晨大大_7769

2026-06-02

171人浏览

原创

sublime text 本身不运行 haskell,所有功能依赖外部工具链;90% 配置失败源于 ghc、haskell-language-server 或 runhaskell 未正确加入 path,需手动注入环境变量、确保项目含 .cabal 或 hie.yaml、安装 lsp 及 lsp-haskell 插件,并完全重启编辑器。

sublime text配置haskell运行环境_sublime text语法增强提示设置【函数】

Sublime Text 本身不提供 Haskell 运行能力,所谓“运行”就是调用系统已安装的 runhaskell 或 ghci;语法增强提示(如 hover 类型、跳转定义)则完全依赖 haskell-language-server(HLS)是否启动成功、路径是否被 Sublime 正确继承、项目配置是否完整——配不起来,90% 是环境变量没对上,不是插件装错了。

怎么让 Ctrl+B 直接跑单文件 Haskell 脚本

默认 Build System 对 .hs 文件无效,必须手动创建 Haskell.sublime-build。关键不是“写对 JSON”,而是命令和上下文要匹配真实使用场景:

  • "cmd": ["runhaskell", "$file"] 最适合无模块依赖的脚本(比如含 main = print "hello" 的单文件),它不生成中间文件,改完即跑
  • 别用 ["ghc", "-e", "main", "$file"]:GHC 不支持直接 -e 执行模块,会报 cannot find symbol main
  • "working_dir": "$file_path" 必须设,否则 readFile "data.txt" 这类相对路径会失败
  • Windows 用户若遇到 'runhaskell' is not recognized,不是插件问题,是 Sublime 没继承系统 PATH——检查 where runhaskell 输出路径,再手动注入 Sublime 的 Preferences.sublime-settings 的 env.PATH

为什么 hover 看不到完整类型签名(比如缺 forall 或约束)

HLS 默认开启类型美化(type pretty-printing),把 forall a. Eq a => a -> a -> Bool 折叠成 a -> a -> Bool,掩盖了多态和约束细节。这不是 bug,是设计选择,但函数式开发中你常需要原始签名来推理类型。

Sublime Text Build Linux版
Sublime Text Build Linux版

Sublime Text Linux x86-64 deb 安装包。官方也提供 rpm、tar.xz 和软件源安装方式。

下载
  • 在项目根目录建 hls.yaml(HLS v2.1+ 支持),内容为:
    {"plugins": {"ghcide": {"typecheck": {"showFullTypes": true}}}}
  • 同时确保 hie.yaml 存在且 cradle 配置正确,例如:
    cradle: direct: arguments: []
  • 改完后必须执行 Ctrl+Shift+P → LSP: Restart Servers,仅重启 Sublime 不生效——HLS 进程绑定的是旧配置
  • 如果仍不显示,检查 HLS 版本是否匹配 GHC:GHC 9.4.x 需 HLS 2.4.x,错一个 patch 版本就可能忽略 hls.yaml

Sublime 底部状态栏卡在 “Haskell: Starting…” 不变绿

这不是插件卡死,是 haskell-language-server 启动失败或未完成索引。LSP 插件只负责转发请求,它不处理解析逻辑——失败原因几乎全在外部工具链。

  • 先确认终端能跑通:haskell-language-server --version、ghc --version、which haskell-language-server ——任一失败,Sublime 就不可能起来
  • 项目根目录必须有 .cabal、package.yaml 或 hie.yaml,否则 HLS 启动时静默降级,状态栏也不报错
  • macOS/Linux 用户:从 Dock 启动 Sublime 时,它不读 shell 的 PATH,import os; print(os.environ.get('PATH')) 在 Sublime 控制台里看不到 ~/.ghcup/bin ——必须手动在 Preferences.sublime-settings 中补全
  • Windows 用户注意路径空格:如果项目路径含中文或空格(如 C:\My Projects\haskell-app),HLS 可能解析 cabal.project 失败,报 Failed to parse result of calling cabal

最易被忽略的一点:HLS 启动后首次索引整个项目依赖树,可能耗时 20–60 秒,期间所有 hover、跳转都无响应。这不是配置问题,是 GHC 编译器本身的解析开销——别急着关掉重试,等右下角变成 “Haskell: Ready” 再操作。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

相关标签:

sublime text

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

相关专题

更多
OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

20

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

20

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

20

15

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

2026.10.15

20

20

MySQL 忘记密码怎么办
MySQL 忘记密码怎么办

MySQL忘记密码专题汇集不同版本与系统下的root密码重置方法,覆盖MySQL 5.7、8.0、Mac、Linux及本地集成环境,并提示恢复权限与重新登录的检查步骤。

2026.10.15

20

18

Vue.js 中 ref 和 reactive 的区别
Vue.js 中 ref 和 reactive 的区别

Vue.js中ref和reactive的区别专题汇集两种响应式API的定义、访问方式、对象解构、侦听与性能取舍等文章,帮助结合实际状态类型选择合适写法。

2026.10.15

20

20

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程