第 12 章 語言擴展

10 廣義代數資料型別

廣義代數資料型別 (Generalized algebraic datatypes),或稱 GADTs,以兩種方式擴展了通常的總和型別:型別參數上的約束可能會根據值建構函式而改變,並且某些型別變數可能會存在量化。它們在第 7 章中描述。

(OCaml 4.00 中引入)

constr-decl::= ...
 constr-name: [ constr-args-> ] typexpr
 
type-param::= ...
  [variance] _

反駁情況。(在 OCaml 4.03 中引入)

matching-case::= pattern [whenexpr] ->expr
 pattern->.

明確命名存在型別。(在 OCaml 4.13.0 中引入)

pattern::= ...
 constr(type { typeconstr-name }+)(pattern)