>>>>> "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