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。隨着其他修復,一切工作正常。謝謝! –