->演算子 (続き)

parse.yを読んで、"->"とlambdaで、何が違うかは分かった。
"->"はメソッドの引数で指定できるもの全部と、ブロックローカル変数が指定できるようだ。

x = ->(a,b=3,*c,&d; e) {
      p(a, b, c, d, e)
    }

x.call(1,2,3,4) { }

y = lambda { |a,b,*c,&d; e|
      p(a, b, c, d, e)
    }

y.call(1,2,3,4) { }

lambdaのほうはブロックパラメタなので、オプション引数が書けない。しかし、それぐらいしか違いが見つからない。(細かく見れば他にもあるのかもしれないが)
そのために新しい記号を導入したのは、潔癖すぎるという気がしなくもない。というか、"->"記号は将来、他に使い道がありそうな記号なので勿体無い。