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

Reply via email to