複数の関数を合成する
高階多相型関数というらしい
#include <iostream> #include <iterator> #include <algorithm> #include <boost/fcpp/prelude.hpp> using namespace fcpp; int main() { list<int> ls = list_with<>()(3, 1, 4); ls = map(compose(inc, inc), ls); // 全要素に+2 std::copy(ls.begin(), ls.end(), std::ostream_iterator<int>(std::cout, ",")); // 5,3,6 return 0; }
ls = map(compose(inc, compose(inc, inc)), ls); // 全要素に+3
ls = map(compose(inc, dec), ls); // +1, -1