如何解决使用多态方法的记录是否排名1?
据我了解:
- OCaml使用1级多态性
- 在1级多态性中,所有量词必须位于最外面的位置(前缘)
但是可以键入以下内容:
type 'a myArray = { map : 'b. ('a -> 'b) -> 'b myArray; }
嵌套类型量词'b
的位置。实际上,这是can be used to simulate higher rank polymorphism in OCaml)。
在这种情况下,秩1多态性中是否可以有嵌套类型量词?类型系统仍然是可预测的,即可以进行完整类型推断吗?
解决方法
由于类型为myArray
的类型推断仍然可能,因此可以提示类型推断。
类型检查器一看到map
字段,便知道使用'a myArray
,因此确切地知道了量词应该在哪里。
以某种方式,因为记录是命名的并且具有类型定义,所以无需推断类型定义中必须包含的内容。请注意,对于元组来说,这是不可能的,因为它们不依赖外部定义并且可以完全推断。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。