我理解这就是你如何定义二叉树类型:
type 'a btree = Empty
| Node of 'a * 'a btree * 'a btree
我如何才能使它成为元组树,以便它具有类型
('a, 'b) btree
答案 0 :(得分:1)
嗯,您的第一个定义定义了任何类型的树。所以它也适用于元组。
# 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