为何我仍然选择 Lisp 和 Scheme 而非 Haskell

查看原文 HN 讨论

文章摘要

作者 Josep Bigorra 在尝试过 Go、Java、Scala、Kotlin 与多种 Lisp 方言后,撰文阐述自己为何在面对函数式编程任务时,仍然偏爱 Lisp / Scheme,而不是被学院派和评测人员推崇备至的 Haskell。文章并非全盘否定 Haskell,相反作者花了相当篇幅承认 Haskell 在类型系统上的非凡成就:代数数据类型、模式匹配、类型类、Monad 等抽象使其成为函数式语言谱系中的”柏拉图理想”,是计算机科学研究人员心目中近乎完美的工具。

然而作者认为这种数学上的纯洁性正是 Haskell 在工业实践中的双刃剑。他举了一个具体例子:自己想为一个书签管理工具写一个原型——任务本身在 Java 中只需”十分钟”,但用 Haskell 却消耗了”令人沮丧的一个多小时”。他被卡在 Cabal/Stack 依赖、HTTP 库的不同抽象层次、以及从纯函数 API 中调用副作用所必须串入的 IO Monad 之间。换句话说,Haskell 强迫程序员在动笔之前就把整个程序从最底层副作用边界规整出来,这与”先写 print 看看再说”的日常黑客式开发风格格格不入。

作者随后总结 Scheme/Lisp 的核心优势:

作者把两种语言的差异整理成对比表:Haskell 在哲学上追求数学纯净、调试需要重构以加入 print、元编程依赖语言扩展、原型阶段慢;Scheme 则以务实灵活著称,可即时观察、原生宏、迭代速度极快。最终结论并非贬低 Haskell——作者承认它在某些场景下仍是无可替代的工具——而是说明在自己日常构建小工具、写脚本和探索性编程的语境中,Scheme 是平衡”力量”与”开发者体验”的甜蜜点,而 Haskell 像”过分严肃的、太硬的雕塑”,对大多数场合来说有些过度工程化。

HN 评论精华