`zip/next` advances a zipper location through a depth-first traversal. It returns a location, not a node: use `zip/node` to read the data at that position. Unlike `clojure.walk`, a zipper lets traversal and processing be chosen separately. section 8.4.4
(-> vzip zip/next zip/node) ; #1 ;; [1 2] (-> vzip zip/next zip/next zip/node) ;; 1 (-> vzip zip/next zip/next zip/next zip/node) ;; 2 (-> vzip zip/next zip/next zip/next zip/next zip/node) ;; [3 4 [5 10 [11 12]]]
Successive calls visit the first child vector, then its elements `1` and `2`, then the next sibling vector. section 8.4.4
Walk and edit
`(->> z (iterate zip/next) (take-while (complement zip/end?)) (map zip/node))` collects visited nodes, including the starting node. To edit during traversal, apply an edit function to each location before calling `zip/next`; when `zip/end?` is true, `zip/root` retrieves the result. A walk that doubles leaves turns `[1 2 [3 4]]` into `[2 4 [6 8]]`. section 8.4.4
