酒井です。

rb_iterate()では、Cの関数をブロックとして積むことはできますが、既存の
Procオブジェクトをブロックとして積むことは出来ないように見えます。

そのため、Cから例えばmodule_evalにProcオブジェクトを渡すために、以下の
ようなコードを書いているのですが、より良い方法はないでしょうか?

  rb_funcall(rb_eval_string("lambda{|obj,proc| obj.module_eval(&proc)}"),
             rb_intern("call"), 2, obj, proc);

--
酒井 政裕 / Masahiro Sakai