鍋あり谷あり

テーマを決めずに適当に書いています。

ruby の lambda の 新文法

昨日も書いた http://www.rubyist.net/~matz/20050722.html#p02 の話。

まずはリンク元を明示せずに引用して:

けっきょく、()を使うってことの問題点は何なんだったっけ??
{(x, y) x + y}
のよーな形式。

この文法は、多重代入と区別がつかなくなるケースがある。
実際、今の ruby で:

lambda{ (ARGV); p 1 }
lambda{ (x, y=4); puts "#{x} #{y}" }

などが普通に実行できるので、何の装飾もない括弧は使えないと思う。

なんて書いていたら思いついた:

f = { x, y -> puts( x+y ) }
ary.each{ x -> puts x }

ってのはどうだろう。
これなら引数の後に「->」があるので、関数型の人たちも安心。
パースも簡単。のような気がするけど定かではない。
見た目もなんとなくラムダっぽい気がする。
バックスラッシュを使わないのでロケールの問題が軽微。
まあ。
こんなところに書いても Matz さんは気づかないような気もするが。