gpt4 book ai didi

functional-programming - 简单类型的 lambda 演算与 Hindley-Milner 类型系统

转载 作者:行者123 更新时间:2023-12-04 08:42:45 24 4
gpt4 key购买 nike

我最近一直在学习 λ 演算。我理解无类型和有类型 λ 演算之间的区别。但是,我不太清楚 之间的区别。 Hindley-Milner 型系统 类型化 λ 演算 .是关于parametric polymorphism或者还有其他区别吗?

谁能清楚地指出两者之间的差异(和相似之处)?

最佳答案

我看之间关系的方式类型化 λ 演算 Hindley-Milner 型系统 类型化 λ 演算 λ-演算添加类型。你可以做类型化 λ 演算 不需要 Hindley-Milner 型系统 ,例如所有类型都被声明,它们不被推断。

现在如果你要写一个 strongly statically typed基于的编程语言类型化 λ 演算 并想省略 type annotations允许类型为 inferred然后 type inference被使用,并且很可能你会使用 Hindley-Milner 型系统 或者它的一个变种。

另一种思考方式是在创建基于 的编程语言时类型化 λ 演算 是编译器会有 phases ,其中之一将使用 Hindley-Milner 型系统 .阶段的顺序是:

  • 语法检查 - Lexer
  • 语义检查 - Parser
  • Type inference - Hindley-Milner type system
  • Type checking
  • ...

  • 另一种思考方式是 type system有一套 type rules还有那个 Hindley-Milner type system是具有特定类型规则集的特定类型系统。 Hindley-Milner type system的主要好处之一是推断类型的时间效率高,并且还有许多类型规则 soughtfunctional programming ,例如 Let-polymorphismparametric polymorphism .在现实世界中,如果您正在创建一种编程语言并希望推断类型,那么您希望在合理的时间内完成,例如秒。自 inferencing可能导致 combinatorial explosion经常寻求一套有效的规则,这就是为什么 Hindley-Milner type system 的主要原因之一。被如此频繁地使用或引用。

    适用于基于 的现实世界编程语言类型化 λ 演算 System F .

    关于functional-programming - 简单类型的 lambda 演算与 Hindley-Milner 类型系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52595339/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com