垠的备忘录

Hindley-Milner 类型推导的根本局限性

Yin Wang's avatar
Yin Wang
Dec 06, 2023
∙ Paid

世界上最糟糕的因为片面追求“短小”而产生的理论,莫过于 Hindley-Milner (HM)类型系统了。HM 系统所谓的“类型推导”,其实只是为了可以不在函数参数等地方写类型标记。

写点类型标记真的有那么痛苦吗?其实并不是,反而类型标记可以帮助人的阅读。看到类型标记,读者不需要运行代码,不需要去看调用者,就能知道这些参数里面可能是什么。缺少了类型标记,读者就得自己去做“人脑类型推导”,反而更加痛苦。

HM 类型系统诞生于一个玩具(工具)语言 ML,它并没有考虑大规模工程实践。后来的 OCaml 和 Haskell 等语言都受其害,在其基础上发展,最后弄得非常难懂,却有很多不必要的限制。很多本来应该可以写的代码,通过不了 HM 的类型推导。

Kent Dybvig 是不信仰 HM 系统的。有一次他跟我们讲了…

User's avatar

Continue reading this post for free, courtesy of Yin Wang.

Or purchase a paid subscription.
© 2026 Yin Wang · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture