boost::lambda風無名関数

fun(x){ return x+5; } を @1+5 と書ける機能です。
fun(x, y){ return x*y; } を @1*@2 と書ける機能です。

// 偶数だけ取り出して配列としてプリントする
[4, 5, 8, 3, 7, 2].select(fun(x){ return x%2==0; }).to_a.p; 

↓

[4, 5, 8, 3, 7, 2].select(@1%2==0).to_a.p; 

これは「どっからどこまでが関数リテラルとなるのか?」が上手く定義できないのと、やっぱり見難いのでやめました。

 @2 - @1; // fun(x, y){ return y - z; }

 @2.foo(@1+1);
 //これは? fun(x, y){ return y.foo(x+1); } 
 //それとも fun(x, y){ return y.foo(fun(x){ return x+1; })


次のように書ける記法を作ったので必要無いでしょう。

[4, 5, 8, 3, 7, 2].select(|x|x%2==0).to_a.p;