# Ruby 1.9の新しいラムダ構文 _published: 2008/06/20_ ![alt](http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/shunsuk/20080620/1213962352) 達人プログラマーDave Thomasのブログより。 - [PragDave: New lambda syntax in Ruby 1.9](http://pragdave.blogs.pragprog.com/pragdave/2008/05/new-lambda-synt.html) 例えば、`while` を自作するとします。 ```ruby def my_while(cond, &body) while cond.call body.call end end ``` 使い方。 ```ruby a = 0 my_while lambda { a < 5 } do puts a a += 1 end ``` Ruby 1.9 だと、 `lambda` と書かずに、`->` が使えます。 ```ruby a = 0 my_while -> { a < 5 } do puts a a += 1 end ``` 確かに `lambda` と書かねばならないのは、ビミョーでした。`->` は賛否両論なのでしょうか。 C# だと。 ```cs delegate void Body(); static void MyWhile(Func<bool> cond, Body body) { while (cond()) { body(); } } int a = 0; MyWhile(() => a < 5, delegate() { Console.WriteLine(a); a++; }); ``` `=>` があることで、ラムダ式として認識されます。 RubyはLispの流れを汲んでいるので、、、知ったかぶりはやめときます。 「破れ窓理論」が心にシミル「達人プログラマー」。