Я новичок в OCaml и языках семейства ML. У меня есть это двоичное дерево, и я хочу напечатать каждый лист. Вот мой код, но, видимо, он не работает. Не могли бы вы рассказать мне, что с этим не так? Благодарю.Печать двоичного дерева в OCaml
open Core.Std
open Printf
type bintree = Leaf of int
| Node of bintree * int * bintree
let rec print_tree_infix tree = function
Leaf n ->
Printf.printf "%d" n
| Node (left, n, right) ->
Printf.printf "%d" n;
print_tree_infix left;
print_tree_infix right
let mytree = Node(Node(Leaf 6, 3, Leaf 9), 8, Node(Leaf 7, 9, Leaf 2))
print_tree_infix mytree
Это ошибка я получил:
$ ocaml setup.ml -build
Finished, 0 targets (0 cached) in 00:00:00.
+ ~/.opam/system/bin/ocamlfind ocamldep -package core -package threads -modules src/main.ml > src/main.ml.depends
File "src/main.ml", line 16, characters 0-16:
Error: Syntax error
Command exited with code 2.
Compilation unsuccessful after building 1 target (0 cached) in 00:00:00.
E: Failure("Command ''/usr/bin/ocamlbuild' src/main.byte -tag debug' terminated with error code 10")
make: *** [Makefile:7: build] Error 1
В будущем это может помочь показать как ваш код, так и ошибки (-ы), которые вы видите. – hcarty
«По-видимому, это не работает» на самом деле мало что говорит. Не могли бы вы рассказать нам точно, что вы ожидаете получить, и что вы получаете вместо текущей версии кода? Во всяком случае, есть по крайней мере две проблемы: вам нужно либо поместить ';;' в конце определения letittree, либо начать следующую строку с 'let() =', чтобы четко разделить две фразы и что у вас есть префиксный обход, а не инфикс, как показывает название функции. – Virgile