Thanks for the details. You definitely made the right pragmatic decision. What you've said pretty much matches what I expected to hear, although I'm hopeful that the approach can be refined, since it's quite eloquent. Beyond eloquence, the derivatives approach is also interesting for schema validation. See: http://www.thaiopensource.com/relaxng/derivative.html
Regarding memory pressure, I think the primary pain point originates from the same underlying cause: Those Racket-isms that you found difficult to port to Clojure. Cyclic data structures, in particular, preclude the structural sharing that occurs with incremental changes to persistent data structures. Additionally, memoization is thwarted because cycles complicate equality. Cycles are better off encoded as named references in a spanning tree (and, like an AST, would need nominal equality) and Laziness can be achieved indirectly via fixed-point rewriting (rather than explicit thunks) which is already necessary for the algorithm. I asked Matt Might about all this<https://twitter.com/BrandonBloom/status/322877682138349568>, but Twitter isn't really the best forum for that conversation. Cheers, Brandon -- -- 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 Note that posts from new members are moderated - please be patient with your first post. 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.