我试图在OCaml语言中研究GADT的可能性,并尽可能地定义映射函数应该对这些类型做什么。不幸的是,我没有设法完成下面示例中类型的映射函数的定义。可以找到此示例的全文here。如果有任何帮助,我将不胜感激。谢谢大家。
type ('a, _) expr =
| Const : 'a -> ('a, 'a) expr
| Add : ('a, 'a) expr * ('a, 'a) expr -> ('a, 'a) expr
| Less : ('a, 'a) expr * ('a, 'a) expr -> ('a, bool) expr
| Not : ('a, bool) expr -> ('a, bool) expr
| If : ('a, bool) expr * ('a, 'a) expr * ('a, 'a) expr -> ('a, 'a) expr