H-E-B 的企业级 Haskell 实战
来源:blog.haskell.org — 2026-07-16
📋 概述
本文作者 Joshua Miller 回顾了 H-E-B(美国德州最大私营零售企业)过去八年将 Haskell 引入核心供应链系统的真实历程。从最初被咨询公司提议替代大型 COBOL 主机应用,到如今近百万行 Haskell 代码支撑多个关键生产系统,作者既分享了 Haskell 在类型安全、无痛重构、解析遗留格式和嵌入式 DSL 方面的独特优势,也坦承了空间泄漏、复杂度预算失控、团队兴趣缺失等失败教训。文章最后指出,随着 GHC 生态(HLS、可观测性、库生态)日趋成熟,以及 AI 编码时代对“验证代码”提出更高要求,Haskell 作为企业核心语言正变得更具竞争力。
🔑 核心要点
- 从主机到 lambda:H-E-B 用 Haskell 替代公司最大的 COBOL 主机应用,历经八年,多个关键供应链系统已稳定运行在生产环境。
- 企业选型的理由:静态类型 eliminate 空指针、类型混淆等常见运行时错误;GHC 让重构 painless,适合需求仍在演化的长期迁移项目。
- 与遗留系统共生:Haskell 的解析器组合子、FFI 能力使其能直接消费固定宽度 IBM copybook、ODPI-C、IBM MQ 等老旧接口。
- 自研 SDK 的代价与收益:缺乏现成 SDK 意味着要自维护,但换来的是避免厂商锁定、完全掌控契约,且 AI 能辅助完成机械式移植。
- 嵌入式 DSL:用 Haskell 编写领域模型 DSL,可生成 Java/Python/Scala/TypeScript 等安全代码,让不同技术栈的团队共享核心逻辑。
- 复杂度预算:GADTs、type families、tagless final 等高级特性虽强大,但会侵蚀可维护性;建议通过专家维护的小型库封装,保持主业务代码“无聊”。
- 失败案例:空间泄漏曾让一个无 Haskell 经验的团队放弃项目;核心倡导者离职也会导致技术栈回退——团队热情是最终防线。
- 生态成熟:GHC 8.2 时代工具链薄弱,如今 HLS、ghciwatch、hs-opentelemetry、orville-postgresql 等让 Haskell 从“勉强可用”变得“真正可竞争”。
- AI 时代的优势:当编码 Agent 大量生成代码时,瓶颈从“写代码”转向“验证代码”,GHC 的类型系统能为 Agent 提供 tight feedback loop。
💡 金句
企业只是想要另一套 COBOL:一套能再稳定运行 40 年、没有空指针异常、并且维护负担更低的系统。
👍 0
👎 0
← 返回 Lobsters 首页