C++ ブースト バインド ライブラリと clojure の部分関数は非常に似ています。例えば:
int x = 8;
bind(std::less<int>(), _1, 9)(x); // x < 9
これは、clojure の部分関数に似ています。
((partial > 9) 8)
違いはpartial
、最初の n 個のパラメーターのみをバインドできるのに対し、バインドされboost::bind
ているパラメーターとバインドされていないパラメーターを示すプレースホルダーを許可することです。したがってboost::bind
、実際にははるかに一般的で便利です。
bind(f, _2, _1)(x, y); // f(y, x)
bind(g, _1, 9, _1)(x); // g(x, 9, x)
boost::bind
clojure(またはclojure-contrib)に似たものがあるかどうか疑問に思っていますか?そして、なぜパーシャルはより一般的 (かつ有用) に書かれていなかったのboost::bind
でしょうか?