我使用 Clojure Zipper 创建了下图
A
/ | \
B C D
/ \
E F
使用以下代码:
(require '[clojure.zip :as z])
(def g (z/vector-zip ["A" ["B" "C" "D"["E" "F"]]]))
现在我想在 d3 中创建一个可视化,所以我想以 EDN 格式表示图形,例如,
[{:from "A" :to "B"}
{:from "A" :to "C"}
{:from "A" :to "D"}
{:from "D" :to "E"}
{:from "D" :to "F"}]
我试过这个
(loop [t g]
(if-not (z/end? t)
(do
(if-not (z/branch? t)
(println {:from (-> t (get 1) :ppath :l) :to (z/node t)})
)
(recur (z/next t))
)
)
)
唯一的问题是子 E & F,我无法跟踪它的父节点 D。