Ok, now I get it. The results you included weren't a hypothetical example, you 
were simply using a different version of Clojure. So in your 1.3 version, the 
second (b 1 2) does return -3?

Are the macro expansions of 'defn' different?


Have all good days,
David Sletten

On Nov 16, 2010, at 10:52 PM, Alyssa Kwan wrote:

> Notice that when I redefined a, I only included one arity.  If b were
> updated with the fn that a was redefined to, then (b 1 2) should have
> thrown an exception.  Instead, it used the old definition of a but
> within that definition pointed to the new definition of a.  This is
> internally inconsistent.
> 
> I'm not proposing making all function definitions lexically bound.
> Yes, that would destroy interactive coding.
> 
> But to be internally consistent, self-references should be lexical.
> 
> 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.
> 
> Thanks,
> Alyssa Kwan
> 
> On Nov 16, 6:01 pm, David Nolen <dnolen.li...@gmail.com> wrote:
>> But that would destroy one of the most useful features Lisp has to offer,
>> interactive coding.
>> 
>> Live coding would be impossible w/o this behavior as you would need to find
>> and update all callers. Yuk.
>> 
>> David
>> 
>> On Tue, Nov 16, 2010 at 5:26 PM, Alyssa Kwan <alyssa.c.k...@gmail.com>wrote:
>> 
>> 
>> 
>>> I ran into this while working on making functions durable.  Here's a
>>> contrived example:
>> 
>>> => (defn a
>>>     ([x] x)
>>>     ([x y] (+ (a x) (a y))))
>>> #'user/a
>> 
>>> => (a 1 2)
>>> 3
>> 
>>> => (def b a)
>>> #'user/b
>> 
>>> => (b 1 2)
>>> 3
>> 
>>> => (defn a [x]
>>>     (- x))
>>> #'user/a
>> 
>>> => (b 1 2)
>>> -3
>> 
>>> Is this what people expect?  I would think that the original
>>> definition of a, which is self-referencing, should point to itself no
>>> matter what it's named, not get resolved at invoke-time to see what
>>> the var is currently resolving to.
>> 
>>> Thanks,
>>> Alyssa Kwan
>> 
>>> --
>>> 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<clojure%2bunsubscr...@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




-- 
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