Alyssa Kwan <alyssa.c.k...@gmail.com> writes: > In any case, I am using Github master and I thought I was using 1.2. > 1.2 has self-references lexically bound, as David Sletten points out, > which I agree is the correct behavior. But something has happened on > 1.3 alpha that has changed that. I don't know if it's intentional or > not.
In 1.2: user=> (macroexpand '(defn foo [] 2)) (def foo (.withMeta (clojure.core/fn foo ([] 2)) (.meta (var foo)))) It's clearer if we remove the metadata and explicit namespace stuff: (def foo (fn foo ([] 2))) While in git master we have: (def foo (fn ([] 2))) This is the commit that changed it: http://github.com/clojure/clojure/commit/52adb74f5335c8256f6468581028f44220547dca It's not mentioned explicitly in the commit message, so my guess was it was unintentionally clobbered when the metadata stuff was removed. Unless the idea is to no longer treat recursive calls as a special static binding case? -- 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