letsboost::関数型プログラミング

トップページ

概要

Haskell や Erlang, OCaml などの「関数型プログラミング言語」が流行しています。 例えばコールバック関数やSTLのfind_ifなどに渡す述語関数など… 関数それ自体を渡して色々処理をするというプログラミング手法は、 関数型言語と呼ばれることのないC++であっても、 かなりの頻度で使われる重要な技法です。

が、ノーマルな状態のC++ではやっぱりその辺りは貧弱。 関数ポインタでも関数オブジェクトでも分け隔て無く、 関数として呼び出せるものを変数に格納したいときはどうすればよいでしょう? ある関数の第二引数と第三引数を固定して、1変数関数として std::for_each に渡したいときは? クラスの変数とメンバ関数をまとめて一つのフリー関数のように扱えると、 特にコールバック処理の時に便利ですが、どう実装すればよいでしょうか?

答えはここにあります。

内容

bind, mem_fn
引数束縛・関数合成
function
汎用関数オブジェクト
functional
標準の<functional>の拡張
lambda
無名関数・クロージャ
signals2
Observerパターン
ref
参照引数エミュレート
presented by k.inaba (kiki .a.t. kmonos.net) under CC0