在OCaml中声明二进制树中的元组

时间:2017-10-09 22:20:27

标签: ocaml binary-tree algebraic-data-types

我理解这就是你如何定义二叉树类型:

type 'a btree = Empty
              | Node of 'a * 'a btree * 'a btree

我如何才能使它成为元组树,以便它具有类型 ('a, 'b) btree

1 个答案:

答案 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