模块 Type

module Type: sig .. end

类型自省。


类型相等证明

type (_, _) eq = 
| Equal : ('a, 'a) eq

eq 的目的是表示类型检查器可能无法识别的类型相等关系(例如,因为它们可能依赖于动态数据)。

类型为 (a, b) eq 的值表示类型 ab 相等。

如果有一个值 eq : (a, b) eq 证明类型 ab 相等,那么可以使用它通过匹配 Equal 模式将类型为 a 的值转换为类型为 b 的值。

      let cast (type a) (type b) (Equal : (a, b) Type.eq) (a : a) : b = a
    

在运行时,此函数只是返回其第二个参数,保持不变。

类型标识符

module Id: sig .. end

类型标识符。