I am a bit puzzled, I did a quick test and rebinding using a declare should work (outside of your sample code). I have a reminiscence of a similar problem I encountered before version 1.0 and used a def to solve my problem at the time.
But the small test I just made with 1.2 is working. There's a context issue I do not quite grasp here... or I am aging fast... Luc. Cameron Pulsford <cpuls...@gmail.com> wrote .. > Interesting results. > > By putting (println compiled-ops) it worked, but not by putting it in > a doall. (same error) > > Changing my declares to defs did the trick did though and learning > about bound-fn* was also a serious mind-expander for me right now too. > > Thanks to both of you! > > On Sep 6, 4:57 pm, Jarkko Oranen <chous...@gmail.com> wrote: > > Cameron Pulsford wrote: > > > Is there a way to do this? Besides cleaning up function signatures is > > > this a premature optimization to begin with? > > > > > (declare *macros*) > > > > > (defn macro-expand [tokens] > > > (map #(get *macros* % %) tokens)) > > > > > (defn compile-op [op] > > > (macro-expand op)) > > > > > (defn assemble [{:keys [macros syms blks fncs]}] > > > (binding [*macros* macros] ;; I thought binding would handle this, > > > but I must be misusing it > > > (let [compiled-ops (map compile-op fncs)] > > > compiled-ops))) > > > > Your problem is that compiled-ops is a lazy sequence, and it only gets > > realised when it's used, which probably happens after it has exited > > the dynamic scope where *macros* is bound. > > > > You can work around the problem by forcing the sequence with doall or > > by using bound-fn* to save the dynamic environment (ie. (map (bound- > > fn* compile-op) fns), though double check that from the docs) > > -- > 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 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