2015-02-10 1 views
2

Как я мог создать следующий график, используя Clojure Zipper (vector-zip):Как создать Clojure Zipper

A 
/| \  
B C D 
    /\ 
    E F 

Я попытался

(vector-zip ["A" ["B" "C" "D"["E" "F"]] ]) 

возвращает

[["A" ["B" "C" "D" ["E" "F"]]] nil] 

Является ли это правильно?

+0

Я попробовал '(vector-zip [" A "[" B "" C "" D "[" E "" F "]]])'. Он возвращает '[[" A "[" B "" C "" D "[" E "" F "]]] nil]'. Это правильно? Не могли бы вы кратко объяснить? @cfrick – palash

ответ

2

Да, это правильно. Некоторые тесты вашего кода:

(require '[clojure.zip :as zip]) 

(def zv (zip/vector-zip ["A" ["B" "C" "D"["E" "F"]]])) 

(-> zv zip/next) ; => ["A" {:l [], :pnodes [["A" ["B" "C" "D" ["E" "F"]]]], :ppath nil, :r (["B" "C" "D" ["E" "F"]])}] 

(-> zv zip/next zip/node) ; => "A" 

(-> zv zip/next zip/next zip/next zip/node) ; => "B" 

(-> zv zip/next zip/next zip/children) ; => ("B" "C" "D" ["E" "F"])