Недавно я слушал интервью Rich Hickey на Радио Software Engineering. Во время интервью Рич упомянул, что коллекции Clojure реализованы как деревья. Я надеюсь реализовать постоянные структуры данных на другом языке и хотел бы понять, как реализуются наборы и Clojure другие постоянные структуры данных.
Что будет выглядеть дерево в каждой точке в следующем сценарии?
-
Создайте набор
{1 2 3}
-
Создайте объединение
{1 2 3}
и{4}
-
Создайте разницу между
{1 2 3 4}
и{1}
Я хотел бы понять, как сгенерированы три сета ({1 2 3}
, {1 2 3 4}
и {2 3 4}
), и как обрабатываются "удаления".
Я также хотел бы узнать максимальное количество ветвей, которое может иметь node. Рич упомянул в интервью, что деревья мелкие, поэтому предположительно коэффициент ветвления больше двух.