Hi,
Am 21.02.2012 um 22:56 schrieb Aaron Cohen:
> One complication I'm not sure about is nested fns.
>
> I'm typing the following in my email client, so forgive any typos...
>
> For instance: {:op :fn, :children [{:op fn, :children [{:op :constant,
> :form 1}]}, {:op :constant, :form 2}]}
>
> Does your solution result in the top level getting both constants?
> Unfortunately, my specification didn't mention that, but each fn acts
> as a level of scope for the constants, they shouldn't dribble out to
> the top.
At the moment they do. But it's easy to filter out ::fn's.
(defmethod collect-constants ::recursive
[{:as form :keys [children]}]
(->> children
(filter #(-> % :op (= ::fn)))
(map :constants)
(reduce into #{})
(assoc form :constants)))
This breaks the chain of constant propagation at nested ::fn forms.
Meikel
--
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