>,但随后抱怨我的类没有声明任何类型变量。因此,classA似乎需要有类型变量;然后,我显式地引入了一个类型变量。. > method f : 'a -> int end
这是可行的,但正如OCAML所示,该类现在是显式多态的,具有类型约束。类类型包含类型变量'a也令人困惑,但我仍然可以说是let x = new classA2,而无需为
我读了一些关于Standard中的值限制的文章,并尝试将这个示例翻译到OCaml,看看它会做什么。看起来,OCaml在SML由于值限制而拒绝程序的上下文中生成这些类型。stdIn:1.6-1.33 Error: explicit type variable cannot be generalized at its binding declaration: 'a in expression:
r :=
据我所知,本文讨论了OCaml目前的模块类型/签名系统的起源。作者建议对签名中的类型声明(允许单独编译)和显式类型声明(表示性)进行不透明的解释。试图将我自己的一些例子放在一起来演示OCaml模块签名符号试图解决的问题,我在两个文件中编写了以下代码:module type我承认,我不确定在module A : B中遇到的语法:,但它让我怀疑是否存在
假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出现在定义中的任何地方$ ocaml