0
type exp = V of var
| P of var * exp
and var = string
我正在构建一个二进制引用树,其中右叶节点查找左叶节点上的叶节点,并且如果所有右叶节点都与某些左叶节点相匹配,则返回true 。ocaml的二进制引用树查找
let rec ctree : exp * exp -> bool
=fun (e1,e2) -> match e2 with
| P (x,y) -> match y with
| P (a,b) -> if (ctree(a,b)) then true else ctree(x,b)
| V a -> if a=x then true else ctree(e1,y)
| V x -> e1=x
但在这里,我一直在第5行收到错误:
| V a -> if a=x then true else ctree(e1,y)
这里的E1有型EXP,它应该是这样,但是编译器不断告诉我,这应该是一个类型var = string。另外,第6行,
V x -> e1=x
它告诉我,应该有型无功=字符串代替E1的一次。
谁能告诉我,为什么它得到的错误?
感谢大家的回答杰弗里!我对这个函数的类型有麻烦。它应该是var * exp - > bool。随着其他修复,一切工作正常。谢谢! –