假设我有一个由多个多态变量(协变)组成的类型,如下所示: [> `Ok of int | `Error of string] 让我们进一步假设,我希望将此定义分解为某种类型构造函数和一个具体的类型int我的第一次尝试是这样的: type 'a error = [> `Ok of 'a | `Error of string] 然而,使用这样的定义会产生一个非常奇怪的类型错误,它提到了一个类型变量'b,该变量没有出现在定义<
我使用的是版本4的Ocaml。当我以交互方式定义某个类型时,解释器会立即打印出该类型的字符串表示:type foo= Yes | No <-- This is what interpreter bounced
但是在我输入更多的定义之后,有时我想再次看到类型的文本表示。我如何在Ocaml中做到这一点?
我感兴趣的是在大图像类型的层次结构中定义一个原始类型(颜色通道)。由于所讨论的类型代表了一点,因此将其可能的值限制在0到255范围内的整数似乎是合理的。但是,我不知道在类型级别实现这样的约束是否是OCaml的类型系统中通常所做的事情。type channel = int (* restrict to range 0 -> 255 *)
如果这样做在OCaml类型系统中是合法的,那么应该如何在类型级别上定