这些多态类型之间的区别是什么?

时间:2016-02-08 15:00:39

标签: lambda polymorphism system-f

在系统F中,以下3种类型之间有什么区别:Three formulas involving forall and implies as below.

转载于此处的文字:

∀X.((X → X) → (X → X))
∀X.((X → X) → ∀X.(X → X))
((∀X.X → X) → (∀X.X → X))

第二个比第一个更通用吗?

1 个答案:

答案 0 :(得分:0)

取决于forall量词的紧密程度。让我们假设它绑定到下一个终端表达式(变量或() - 块)。

第一个将成为(X0 -> X0) -> (X0 -> X0),其中X0是一个新的类型变量。

第二个将变为(X0 -> X0) -> forall X1. (X1 -> X1),其中X0X1是新鲜的。

第三个 - (bot -> X) -> (bot -> X)其中X是旧绑定,机器人是无人居住的forall X. X