# Ruby 1.9の新しいラムダ構文
_published: 2008/06/20_ 
達人プログラマー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の流れを汲んでいるので、、、知ったかぶりはやめときます。
「破れ窓理論」が心にシミル「達人プログラマー」。