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 を追跡できませんでした。