William Djaja Tjokroaminata wrote: ... > Can you help to write the statement > > func1 (arg1, &arg2) > > in C? I am still struggling on how to covert this Proc "&" operator to > C. (Well, everything else fails, there is always that > "rb_eval_string()" ultimate weapon :) ) Maybe rb_iterate is what you're looking for. From the Pickaxe: VALUE rb_iterate(VALUE (*method)(), VALUE args, VALUE (*block)(), VALUE arg2) Invokes method with argument args and block block. A yield from that method will invoke block with the argument given to yield, and a second argument arg2. So you would have to wrap your method, func1, and your proc, arg2, inside two C functions, and pass pointers to them as method and block in the prototype. I wish there were an rb_iterate2 or something which accepted a symbol and a proc as VALUEs, to save you from having to wrap them in functions.