>>>>> "L" == Lin Jen-Shin <godfat / gmail.com> writes: L> My implementation of Proc#curry just solved this L> problem simply by re-currying (not recursively) it again L> whenever the arity equaled to -1 and the ArgumentError L> was raised. Well another possibility is that when curry() is called the first time with a symbol (i.e. proc->block.iseq->nd_cfnc == sym_call), try to find the arity of the method (ruby has self and id), ... and call the method or re-currying the proc. Don't know if it's easy to do. Guy Decoux