OCaml中的空树类型

sou*_*ult 3 polymorphism ocaml variant

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

我知道如何从实例化的标准型多态变异体(一个固定的int,string等等) -见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;;  
Run Code Online (Sandbox Code Playgroud)

nef*_*fas 5

()不是类型,但它是该类型的唯一值unit.

写作() binary_tree就像写作0 binary_tree(而不是int binary_tree).

你的空树应该是类型unit binary_tree.