这是我的代码
type arbre= Feuille of int | Noeud of arbre*int*arbre;;
let monarbre= Noeud(Noeud(Feuille(1),2,Noeud(Feuille(6),9,Feuille(7))),4,Feuille(8));;
let rec occ n a= let cpt=0 in
match a with
Feuille _ -> 0
|Noeud(g,v,d)-> if v=n then cpt+1
else if occ n g then cpt+1
else if occ n d then cpt+1
;;
我想计算这棵树中的出现,但总是有这样的错误消息
文件“ main.ml”,第8行,字符12-19: 错误:此表达式的类型为int,但预期为 类型 布尔 有人可以帮我吗?
您的函数正在计算一个整数值,即n
中a
的出现次数。所以这个表达式:
if occ n g then ...
可能不正确。 if
和then
之间的表达式必须为布尔类型。您的表达式具有int类型。这就是编译器告诉您的内容。
实际上,在我看来,您对occ n g
返回的特定值感兴趣。假设它返回6,我怀疑您想返回的值是6而不是1。
您至少还有一个错误:最终的else
必须有一个if
部分。在这种情况下,您需要指定函数应具有的值。