Ocaml 不确定此实现中出现了什么错误

Ocaml 不确定此实现中出现了什么错误,ocaml,Ocaml,有人能告诉你正确的方法吗?编译器告诉你以下内容。您这样声明了Fork: type 'a tree = Leaf of 'a |Fork of 'a tree * 'a tree (顺便说一句,修复代码中的输入错误) 这确实有两个参数,每个参数的类型都是树 如果你看一下你的Fork构造函数,你会发现你给了他们三个值。下面是你表达式中间的一个: | Fork of 'a tree * 'a tree 您需要更改Fork的定义,或者在使用Fork构造函数时只需要提供两

有人能告诉你正确的方法吗?

编译器告诉你以下内容。您这样声明了
Fork

type 'a tree = Leaf of 'a
               |Fork of 'a tree * 'a tree
(顺便说一句,修复代码中的输入错误)

这确实有两个参数,每个参数的类型都是树

如果你看一下你的
Fork
构造函数,你会发现你给了他们三个值。下面是你表达式中间的一个:

| Fork of 'a tree * 'a tree
您需要更改
Fork
的定义,或者在使用
Fork
构造函数时只需要提供两个值

如果希望在内部节点中使用值,则应修改
Fork
的定义,以包含一个值(类型为
'a
)。如果这些值都应该在叶子上,则需要更改表达式

更新

以下是使用当前定义的树的工作定义:

Fork(4, Leaf, Leaf)

我还应该指出,您使用的
Leaf
参数为零,但您声明它只使用一个参数(如我的示例所示)。

它给您带来了什么错误?构造函数fork需要2个参数,但在这里应用于3个参数您使用了错误的两个参数。您已经声明了两个类型为
'a tree
的参数。这个实验使用的是
int
类型和
'a tree
类型中的一个。
# let (t: int tree) = Fork (Leaf 1, Leaf 2);;
val t : int tree = Fork (Leaf 1, Leaf 2)