function curry(fn){ var args = Array.prototype.slice.call(arguments,1); var result = function(){ return fn.apply(null,args);} var generic_curry = function(){ if(!arguments.length){ return result(); } args = args.concat(Array.prototype.slice.call(arguments)); return generic_curry; } generic_cury.toString = result; return generic_curry; }