Hi, Am 21.02.2012 um 22:35 schrieb Aaron Cohen:
> I'd actuallly tried to avoid littering the syntax tree with :constants > elements anywhere other than where they were needed, but thinking > about it, there doesn't really seem to be any reason to do that, and > it does make the implementation much simpler. I thought of it as each form carrying the interesting information about eg. the contained constants with itself. I understand your idea of keeping things clean. But then there is meta data and maybe this is a very valid use of it. In fact this information *is* metadata about the form. >> (defn processor >> [pre-fns post-fns] >> (fn this [form] >> (let [form (reduce call form pre-fns) >> form (maybe recursive? update-children form this)] >> (reduce call form post-fns)))) > > This is really neat, setting up the processor up front with the > processing functions will work much better than my current overloading > scheme. It's also cool how this provides for a list of pre and post > fns. I'd initially tried to do this but backed off from it as > over-complicated. Of course this version features a cunning inlineing of comp to achieve stunning performance characteristics. *coughcough* Things should probably be more like this: (defn processor [pre-fns post-fns] (let [pre (apply comp pre-fns) post (apply comp post-fns)] (fn this [form] (let [form (pre form) form (maybe recursive? update-children form this)] (post form))))) Meikel -- 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