Какой идиоматический метод закрытия лучше всего подходит для представления дерева, состоящего из узлов разных типов:
A. построение деревьев из нескольких различных типов записей, которые можно определить с помощью deftype или defrecord:
(defrecord node_a [left right])
(defrecord node_b [left right])
(defrecord leaf [])
(def my-tree (node_a. (node_b. (leaf.) (leaf.)) (leaf.)))
B. построение деревьев из векторов с ключевыми словами, обозначающими типы:
(def my-tree [:node-a [:node-b :leaf :leaf] :leaf])
Большая часть кода clojure, который я вижу, похоже, поддерживает использование структур данных общего назначения (векторы, карты и т. д.), а не типов данных или записей. Возьмем один пример, Hiccup очень хорошо представляет html, используя подход вектор + ключевое слово.
Когда мы должны предпочесть один стиль другому?