A tiny suggestion for how we could make it possible to call lambdas
with parenthesis.

Two changes in the parser:

1) If the parser sees "foo()" and "foo" is a local variable (in the
local variable table), it's the same as foo.call().
2) Allow parenthesis after an expression. So "foo[:bar]()" and
"(foo.bar)()" is the same as "foo[:bar].call()" and
"(foo.bar).call()". Of course, the parenthesis after a method call
should take precedence over these parenthesis (so "foo()" doesn't get
rewritten to "foo.call()")

This could be done purely at the parser-level and no changes would be
needed in the VM.

It would break code where you call a method with the same name as a
local variable:

  class Foo
    def bar
      baz = 1
      p baz()
    end
  end

With this proposal, this will attempt to run "baz.call()" => "1.call".

// Magnus Holm