|
|
1
5
根本问题是您的功能
更严重的是,在幻想语法中
其中类型变量
即使
失败是因为
回到您的类型推断问题,typechecker未能推断出您心目中的类型的原因是,类型推断和较高秩多态性没有很好地匹配(更准确地说,在存在较高秩多态性的情况下,类型推断是不可判定的)。为了理解为什么,考虑这个简单的函数
类型
这就是为什么typecheker在编写高阶多态函数时需要非常明确:
另请参见位于的OCaml手册 http://caml.inria.fr/pub/docs/manual-ocaml/polymorphism.html#sec61 |
|
|
2
1
我怀疑它之所以有效,是因为类型推断规则的放宽,这种规则只适用于一些非常有限的条件,其中不包括作为函数参数的记录。
在任何情况下,解决方案都很简单:从记录中删除类型变量并进行通用量化
|
|
|
Eris · 纯虚拟成员有什么优势吗(除了他们可能防止的人为错误)? 3 年前 |
|
|
James Nguyen · Java多态性:为什么返回错误? 8 年前 |
|
|
Alex Cristea · 如何从另一个类的数组中打印特定行 8 年前 |
|
juztcode · C语言中的静态和动态分辨率++ 8 年前 |
|
|
Hugo · 具有多态关系的活动记录获取关联模型 8 年前 |
|
|
pooya13 · 机器代码层上虚函数和条件执行的区别 8 年前 |
|
|
Nisba · C中子类类型未知的模型类/子类++ 8 年前 |
|
|
R zu · 使用多次调用的可替换方法初始化 8 年前 |