首页 > 解决方案 > 具有多态方法的记录是否排名 1?

问题描述

据我了解:

但是,可以键入以下内容:

type 'a myArray = { map : 'b. ('a -> 'b) -> 'b myArray; }

类型量词'b嵌套的位置。事实上,这可以用来模拟 OCaml 中更高等级的多态性)。

那么在rank-1多态中是否可以存在嵌套类型量词,例如这种情况?并且类型系统仍然是可预测的,即完整的类型推断是可能的吗?

标签: polymorphismocaml

解决方案


类型推断仍然是可能的,因为myArray被命名,为类型推断提供提示。

类型检查器看到一个字段的那一刻map,它知道使用 a'a myArray并因此确切地知道量词应该在哪里。

在某种程度上,因为记录被命名并且具有类型定义,所以无需推断类型定义中必须包含什么。请注意,这对于元组是不可能的,因为它们不依赖于外部定义并且是完全推断的。


推荐阅读