関数ポインタを利用する 実用的なプログラムを書くには,通常の関数呼び出しだけでは不十分です。コールバック関数を登録する場合などでは,関数ポインタが必要になることがあります。関数ポインタの利用方法を見ていきましょう。 先に示したforeign.hでは,関数ポインタを使ってPoint型に演算を施すapplyPoint関数を提供していました。 typedef void (*PointFunc) (struct Point *pt); void applyPoint (struct Point* pt, PointFunc func); applyPoint関数を利用するには,Haskellの関数をCの関数ではなく関数ポインタに変換しなければなりません。どうすればよいでしょうか? Cのコードで泥臭く変換することもできますが,FFIには関数ポインタを使用するための宣言がすでに用意されています。for
