OCaml括号语法错误:括号不匹配



我写了一个函数,对二进制树中的所有元素求和:

type 'a tree = Leaf of 'a | Node of 'a tree * 'a * 'a tree;;
let rec sum_tree tree = match tree with
| Leaf l -> l
| a -> a
| Node(tree t1, a, tree t2) -> sum_tree t1 + sum_tree a + sum_tree t2;;

然而,当我试图编译这段代码时,我遇到了一个语法错误:

let rec sum_tree tree = match tree with
| Leaf l -> l
| a -> a
| Node**(**tree **t1**, a, tree t2) -> sum_tree t1 + sum_tree a + sum_tree t2;;
Syntax error: ')' expected, the highlighted '(' might be unmatched

这个代码出了什么问题?

您有这样的模式:

Node(tree t1, a, tree t2)

但是没有a b形式的模式,所以tree t1作为子模式是没有意义的。目前还不清楚你想用这种模式做什么。无论如何,这就是导致语法错误的原因。

很可能你只是想写这个:

Node (t1, a, t2)

现在有3个子模式将与节点的三个子部分相匹配。

最新更新