2011/1/19 Ken Wesson <kwess...@gmail.com> > On Wed, Jan 19, 2011 at 4:06 AM, Laurent PETIT <laurent.pe...@gmail.com> > wrote: > > 2011/1/18 Ken Wesson <kwess...@gmail.com> > >> > >> On Tue, Jan 18, 2011 at 1:07 PM, Stuart Sierra > >> <the.stuart.sie...@gmail.com> wrote: > >> > You're not really aliasing the Vars, you're creating new Vars and > >> > copying > >> > the root values from the originals. > >> > This leads to subtle bugs when the original Vars are dynamically > rebound > >> > or > >> > redefined. That's why Compojure dropped `immigrate`. > >> > >> With 1.3, one could recreate a limited 'immigrate' that only imported > >> the non-dynamically-bindable Vars from the target namespace. This > >> wouldn't cause subtle bugs, only obvious ones if a wanted Var was > >> dynamic and thus didn't get imported. > > > > No, because in 1.3 it will still (hopefully!) be possible to change the > root > > value of vars, be they dynamically rebindable or not. > > No, because alter-var-root! is an unsafe, mutating operation that > should not be done in production code, only at the repl during > testing. >
Where it would also be painful to have to drop/recreate namespaces using this export feature, every time you would alter the root value of the var of an exported namespace. And of course, while we agree that this should not be done in production code, there's by definition a difference between theory and practice, and "should not be done" does not equate "cannot be done", how opinionated your "should" is. -- 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