評価順序と記述順序
id:NyaRuRu:20060223#p2「キーワードを左に」より
一方,C# 3.0 の Extension Methods を使えば,上の式は次のように書き換えることが出来る可能性があります.
a.C().B(b, c.E().D(d, e)).A();まだメソッド B,D にオーバーロード・型パラメータについて曖昧性が発生する可能性は残っていますが,「左から」入力していく上で明らかに IntelliSense が活用できる情報が増えているように見えます.
LINQ 発表時に Visual Basic 9 (の query operator) では SQL のように先頭に select を書ける一方で,C# 3.0 では後置的に select を記述することについて「SQL 的ではないけどいいの?」という疑問が散見されましたが,このような視点で見直すとなるほど select が最後に来ることのメリットは大きいように見えてきますね.
というのをみて、そういえば Perl6 では代入に関する演算子が追加されるようだ、と。
$a = 1 + 1; $a <== 1 + 1; 1 + 1 ==> $a
2つめと3つめが新しい演算子。見た目とおりの機能を提供する。*1
dataset1 ==> where(<category> == targetCategory) ==> select(<name>, <price>) ==> calc(<price> *= 0.05) ==> sum(<name>) ==> printf("%s %d\n", <name>, <price>)
みたいなかんじで、処理を順序だてて記述することができる。遅延評価もあるので上記は全部遅延評価される・・・かもしれない。