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.


Reply via email to