第 12 章 语言扩展

10 广义代数数据类型

广义代数数据类型(GADTs)以两种方式扩展了普通的求和类型:类型参数的约束可能会根据值构造函数而改变,并且某些类型变量可能会被存在量化。它们在第 7 章中进行了描述。

(在 OCaml 4.00 中引入)

constr-decl::= ...
 构造函数名: [ 构造函数参数-> ] 类型表达式
 
type-param::= ...
  [方差] _

反证情况。(在 OCaml 4.03 中引入)

matching-case::= 模式 [when表达式] ->表达式
 模式->.

存在量的显式命名。(在 OCaml 4.13.0 中引入)

pattern::= ...
 构造函数(type { 类型构造函数名 }+)(模式)