Синтаксическая ошибка круглых скобок OCaml: непрямые скобки - PullRequest
0 голосов
/ 21 марта 2020

Я написал функцию, которая суммирует все элементы в двоичном дереве:

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

Что не так с этим кодом?

1 Ответ

2 голосов
/ 21 марта 2020

У вас есть шаблон, подобный этому:

Node(tree t1, a, tree t2)

Но шаблон формы не существует a b, поэтому tree t1 не имеет смысла как под-шаблон. Не ясно, что вы пытаетесь сделать с этим шаблоном. Во всяком случае, именно это вызывает синтаксическую ошибку.

Скорее всего, вы просто хотите написать это:

Node (t1, a, t2)

Теперь у вас есть 3 подшаблоны, которые будут соответствовать трем частям узел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...