On Feb 12, 4:01 pm, Jeffrey Straszheim <straszheimjeff...@gmail.com>
wrote:
> It is easy to do a lazy preorder walk of a tree (in psuedo-clojure):
>
> (fn visit [node]
>   (lazy-cons node (map visit (get-children node))))
>
> So, that much is obvious.  However, I cannot think of an obvious way to do a
> post-order traversal lazily.  I sort of assume it cannot be done, as the
> whole point -- more or less -- of a post ordered walk is you've visited the
> children already.

I think

(defn visit [node]
   (lazy-cat (map visit (get-children node)) [node]))

should do more or less what you want.  It won't be quite as lazy as
the preorder, since it has to walk all the way to a leaf before it can
start producing values, but I think it will evaluate just what's
needed to produce each value (perhaps plus a little bit).

-Jason
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to