Devin Mullins <twifkak / comcast.net> writes:

> 1.  class Foo; def thing; nil end end
> 2.  f = Foo.new; f.thing            #=> nil
> 3.  m = f.method :thing; m.call     #=> nil
> 4.  class Foo; def thing; 5 end end
> 5.  f.thing    #=> 5
> 6.  m.call     #=> nil
>
> Heh, it seems that Ruby really does have first class
> functions. ;) (Why is this happening, btw? Does this have
> something to do with continuations?)

No... nothing to do with continuations.  It's quite simple:
On line 3, a reference to the method body that was defined
on line 1 is stored in the method object bound to m; the
fact that the Foo#thing method is subsequently replaced on
line 4 does not affect the method object, which still has
its reference to the old method body.

-- 
Daniel Brockman <daniel / brockman.se>

    So really, we all have to ask ourselves:
    Am I waiting for RMS to do this?   --TTN.