Martin DeMello wrote:

>Very sweet. How does this work, internally? Have lambdas been
>specialcased at the interpreter level?
>  
>
There is a NODE_LAMBDA now, but the () change seems to be  independent 
of the introduction of the f = { |x, y| x + y } syntax.

Internally a method call to variable 'a' is changed to a call to "call" 
on the referenced object. This means, it's also possible to define call 
methods in arbitrary objects or classes, like this:

class Hash
  def call(x)
    self[x]
  end
end

fib = Hash.new do |f, i|
  f[i] = case i
  when 0 then 0
  when 1 then 1
  else f(i - 1) + f(i - 2)
  end
end
p fib(25)

-- 
Florian Frank