> (fz-node-seq x) is just (tree-seq coll? seq x)

Good Point! I had never noticed the parallels between tree-seq and
zippers, but it's obvious when you point it out.  Thanks for
mentioning that.

> (personally I don't have enough experience to be comfortable with
>  them),

yeah, i haven't found a great use case for zippers yet either.  but
lately I've been experimenting with using them to write more readable
code transforms.  hence the need for form-zip.

Like clojure.walk, but with the ability to backtrack.


> fz-node-seq doesn't seem useful.

Ouch!  Ok, here's one that is.  As you astutely noted above,
fz-node-seq is functionally equivalent to (tree-seq coll? seq x), but
what's interesting about it is, it is implemented like so:
   (map zip/node (fz-loc-seq form))

What's "useful" there is the call to fz-loc-seq which provides
a seq of every zipper loc in the form.  Useful again for code
transforms, I think.

Thanks again for exercising my brain cells.  I haven't forgotten that
beer I owe you.



On Nov 8, 8:06 pm, Alan Malloy <[email protected]> wrote:
> (fz-node-seq x) is just (tree-seq coll? seq x) then, yeah? I could see
> form-zip being useful for people who like zippers (personally I don't
> have enough experience to be comfortable with them), but fz-node-seq
> doesn't seem useful.
>
> On Nov 1, 8:56 pm, George Jahad <[email protected]> wrote:
>
> > surely this one's been written before, but i needed it the other day
> > and couldn't find it.
>
> > form-zip returns a zipper from a clojure form.
>
> > user=> (require '[clojure.zip :as zip])
> > user=> (use 'form-zip.core)
> > user=> (-> '{1 2 3 4} form-zip  zip/next zip/remove zip/root)
> > {3 4}
>
> > fz-node-seq returns a seq of the nodes.
>
> > user=> (fz-node-seq '{1 2 3 4})
> > ({1 2, 3 4} [1 2] 1 2 [3 4] 3 4)
>
> > a one hour hack, probably full of edge cases i haven't thought of.
>
> > on clojars and github:https://github.com/GeorgeJahad/form-zip
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to