OCaml 中的空树类型

Empty tree type in OCaml

我正在尝试创建一个表示空二叉树的类型(基本上,只有它的骨架)。这种类型的变量随后将通过模式匹配进行迭代。

我了解如何从标准类型(intstring 等)的多态变体实例化一个固定的变体 - 请参阅下面的 int_tree。但是,尚不清楚是否可以从多态变体创建一个空变体(下面的 empty_tree 行在编译过程中因 SyntaxError 而失败)。

代码如下:

type 'a binary_tree =                                                                                                                
  | Leaf of 'a                                                                                                                       
  | Node of 'a binary_tree * 'a * 'a binary_tree                                                                                     

type int_tree = int binary_tree;;                                                                                                    

type empty_tree = () binary_tree;;  

() 不是类型,但它是类型 unit.

的唯一值

() binary_tree 就像写 0 binary_tree(而不是 int binary_tree)。

你的空树应该是 unit binary_tree.

类型