OCaml奇怪的语法错误

时间:2014-03-29 22:22:45

标签: syntax syntax-error ocaml binary-tree ml

好的,对不起伙计们,我再来一次x) 该函数应该在 coord 指定的坐标处替换 dt (二叉树)的子树(如[0; 1; 0; 0]]子树 nt ,其中0表示向左,1表示相反)。 顺便说一下,子函数返回具有指定坐标的子树。 我收到了语法错误

else if (List.hd coord)=0 then edit l coord nt
Error: Syntax error
# 

我真的不知道为什么:S 非常感谢:)

let rec edit dt coord nt =
        match dt with
              Decision(choiceL, costL, l, choiceR, costR, r) -> if (sub dt coord)=l then Decision(choiceL, costL, nt, choiceR, costR, r)
                                                                                                                            else if (sub dt coord)=r then  Decision(choiceL, costL, l, choiceR, costR, nt)
                                                                                                                            else if (List.hd coord)=0 then edit l coord nt
                                                                                                                            else edit r coord nt
            | Chance(eventL, probL, l, eventR, probR, r) ->   if (sub dt coord)=l then Chance(choiceL, costL, nt, choiceR, costR, r)
                                                                                                                            else if (sub dt coord)=r then let Chance(choiceL, costL, l, choiceR, costR, nt)
                                                                                                                            else if (List.hd coord)=0 then edit l coord nt
                                                                                                                            else edit r coord nt
            | Outcome value -> raise (Arg.Bad ("Bad argument")) 
    ;;

1 个答案:

答案 0 :(得分:0)

我说你只需要摆脱那里的额外let