我知道这就是你定义二叉树类型的方式:
type 'a btree = Empty
| Node of 'a * 'a btree * 'a btree
我将如何使它成为元组树,以便它具有类型 ('a, 'b) btree
好吧,您的第一个定义定义了任何类型的树。所以它也适用于元组。
# type 'a btree = Empty |Node of 'a * 'a btree * 'a btree;;
type 'a btree = Empty | Node of 'a * 'a btree * 'a btree
# Node ((2,3), Empty, Empty);;
- : (int * int) btree = Node ((2, 3), Empty, Empty)
# Node ((2, true), Empty, Empty);;
- : (int * bool) btree = Node ((2, true), Empty, Empty)
如果需要在节点中强制实施元组,则可以通过在定义中将'a
替换为'a * 'b
并将'a btree
替换为('a, 'b) btree
来定义始终包含元组的树。