謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

式テンプレートで関数合成

意図してなかったのに、こんなコードも通ることに気づいた。

writefln((_0+_1)(_0-_1,_0)(4,2));

ってことで、こんなコードも通る。

auto add = _0 + _1;
auto sub = _0 - _1;
writefln(add(sub(_1,_!(2)),_0)(2,3));

関数合成ktkr。

f!(writefln)(f!((int a,int b){return a+b;})(_0,_1))(2,3);

副作用のある式もこのとおり。
関数の後の(_0,_1)はオーバーロードの解決のための必要悪。