T
(defn collect-uuids [data]
(loop [acc []
{:keys [tag/uuid parent]} data]
(let [r (conj acc uuid)]
(if parent
(recur r parent)
r))))
Size: a a a
T
(defn collect-uuids [data]
(loop [acc []
{:keys [tag/uuid parent]} data]
(let [r (conj acc uuid)]
(if parent
(recur r parent)
r))))
DL
(defn collect-uuids
([data]
(collect-uuids [] data))
([acc {:keys [tag/uuid parent]}]
(let [r (conj acc uuid)]
(if parent
(recur r parent)
r))))
T
(defn collect-uuids
([data]
(collect-uuids [] data))
([acc {:keys [tag/uuid parent]}]
(let [r (conj acc uuid)]
(if parent
(recur r parent)
r))))
E
(def data {:tag/uuid "a"
:parent {:tag/uuid "b"
:parent {:tag/uuid "c"}}})
(def nodes
(tree-seq (fn [node]
(-> node :parent some?))
(fn [node]
(-> node :parent vector))
data))
(map :tag/uuid nodes)
("a" "b" "c")
DL
(def data {:tag/uuid "a"
:parent {:tag/uuid "b"
:parent {:tag/uuid "c"}}})
(def nodes
(tree-seq (fn [node]
(-> node :parent some?))
(fn [node]
(-> node :parent vector))
data))
(map :tag/uuid nodes)
("a" "b" "c")
(def nodes
(tree-seq (comp some? :parent)
(comp vector :parent)
data))
(->> data
(tree-seq (comp some? :parent)
(comp vector :parent))
(map :tag/uuid))
χλ
LD
AD
E
LD
LD
L
V0
((
V0
MB
((
((
((