評価順序と記述順序

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>)

みたいなかんじで、処理を順序だてて記述することができる。遅延評価もあるので上記は全部遅延評価される・・・かもしれない。

*1:これらはパイプ演算子と呼ぶらしい