Based on version in Underscore-Contrib, but without enforcing unary.
var curry = (function(){
function collectArgs(func, context, argCount, args, newArgs){
args = args.concat(Array.from(newArgs));
if (args.length >= argCount){
return func.apply(context || this, args);
}
return function(){