PP
Size: a a a
PP
PP
IG
(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")
AC
(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")
PP
IG
IG
PP
IG
PP
IG
AC
PP
AC
AC
AC
T
T
(defn collect-uuids [data]
(loop [acc []
node data]
(let [r (conj acc (:tag/uuid node))]
(cond-> r
(some? (:parent node))
(recur (:parent node))))))
AC
DL
(defn collect-uuids [data]
(loop [acc []
node data]
(let [r (conj acc (:tag/uuid node))]
(cond-> r
(some? (:parent node))
(recur (:parent node))))))
(defn collect-uuids [data]
(loop [acc []
{:keys [tag/uuid parent]} data]
(let [r (conj acc uuid)]
(if parent
(recur r parent)
r))))