Итак, вот моя проблема. Мне нужно написать функцию, которая будет добавлять элементы в дерево, и это двоичное дерево, поэтому оно должно быть хорошо организовано. Проблема в том, как определяется мое дерево. У меня есть это дерево:Добавить элементы в 'дерево в Ocaml
type 'a tree = {
mutable cont:'a;
mutable left:'a bin_tree;
mutable right:'a bin_tree
}
and 'a bin_tree =
Empty
|Node of 'a bin_tree;;
Так что, когда я пишу функцию, чтобы добавить элементы в этом дереве он говорит, что дерево типа «дерево, и я использую функцию» в bin_tree.
Я пробовал много разных способов написать эту функцию, и я получаю ту же ошибку. Функция я последнее:
let rec dodajVDrevo x = function
Empty -> Node{cont=x; left=Empty; right=Empty}
|Node{cont; left; right} -> if x < cont then Node{cont; left= dodajVDrevo x left; right}
else if x > cont then Node{cont; left; right = dodajVDrevo x right}
else Node{cont; left; right};;
Пожалуйста, помогите мне и дать некоторые подсказки.
Спасибо!
Почему вы определили left, right и cont как mutable? Ваша функция добавления (dodajVDrevo) уже чиста. Поскольку это выглядит как домашнее задание, я предполагаю, что смысл вашего упражнения, чтобы стать знакомым с функциональным стилем программирования; не грязный c-like ocaml-код с изменчивостью. – rafix
Это дубликат: http://stackoverflow.com/questions/16507273/ocaml-tree-simple-functions – Thomash