Ruby 1.9の新しいλ式の文法がキモい件

New syntax for lambdas (VERY EXPERIMENTAL)
------------------------------------------
Note that this does not replace the traditional block syntax. Matz
has already said the latter is here to stay, forever.  The new
syntax allows to specify default values for block arguments, since
{|a,b=1| ... } is said to be impossible with Ruby's current LALR(1)
parser, built with bison.

You can use the new syntax without parenthesis for the arguments.

ruby 1.9.0:
  a = ->(b,c){ b + c }
  a.call(1,2) # => 3
---
  -> { }.call # => nil
  -> a, b  { a + b }.call(1,2) # => 3
  c = 1; -> a, b; c  { c = a + b }.call(1,2); c # => 1 # !> shadowing outer local variable - c
---
  # things get tricky...
  c = 2; -> ;c { c = 1 }.call; c # => 2 # !> shadowing outer local variable - c
---
  # or even...
  c = 2; -> *d ; c { d }.call(1,2,3) # => [1, 2, 3] # !> shadowing outer local variable - c
  c = 2; -> ; c { c = 1 }.call; c    # => 2 # !> shadowing outer local variable - c

.() and calling procs without call/[] (EXPERIMENTAL)
----------------------------------------------------
You can call a proc with .() (the period is needed).

ruby 1.9.0:
  a = lambda{|*b| b}
  a.(1,2)                # => [1, 2]
---
  a = lambda{|*b| b}
  a(1,2)                # => 
  # ~> -:2:in `<main>': undefined method `a' for main:Object (NoMethodError)

正直、なにこれーって感じ。慣れていないせいかかなりキモい。Rubyっぽくない気がする。特に->の構文が記号だらけでやばすぎ。