him*_*him 5 functional-programming type-inference lambda-calculus hindley-milner parametric-polymorphism
我最近一直在学习β微积分。我了解未类型化和类型化的α演算之间的区别。但是,我对Hindley-Milner类型系统和类型化α-微积分之间的区别还不太清楚。是关于参数多态性还是其他差异?
谁能清楚指出两者之间的差异(和相似之处)?
我看待类型化 \xce\xbb-calculus和Hindley-Milner 类型系统之间关系的方式是,类型化 \xce\xbb-calculus是添加了类型的\xce\xbb-calculus 。您可以执行类型化的 \xce\xbb-calculus而不需要Hindley-Milner 类型系统,例如所有类型都被声明,而不是推断。
\n\n现在,如果您要编写基于类型化 \xce\xbb-calculus的强静态类型编程语言,并且想要省略类型注释以允许推断类型,则使用类型推断,并且很可能您会使用Hindley-Milner 类型系统或它的一个变体。
\n\n另一种思考方式是,当创建基于类型化 xcexbb-calculus 的编程语言时,编译器将具有阶段,其中一个阶段将使用Hindley-Milner 类型系统。各阶段的顺序为:
\n\n另一种思考方式是,类型系统具有一组类型规则,而Hindley-Milner 类型系统是具有一组特定类型规则的特定类型系统。Hindley-Milner 类型系统的主要优点之一是,它对于推断类型来说非常省时,并且还具有函数式编程中寻求的许多类型规则,例如Let 多态性和 参数多态性。在现实世界中,如果您正在创建一种编程语言并希望推断类型,那么您希望在合理的时间内完成,例如几秒钟。由于推理可能导致组合爆炸,因此经常寻求一组有效的规则,这也是Hindley-Milner 类型系统如此频繁使用或引用的主要原因之一。
\n\n对于基于类型 \xce\xbb-calculus 的现实世界编程语言,请参阅System F。
\n 归档时间: |
|
查看次数: |
194 次 |
最近记录: |