winter版:
<
script
>
function currying(func)
... {
return function()
...{
if(arguments.length<func.length)
...{
var args=arguments;
var retarg=new Array(func.length-arguments.length);
for(var i=0;i<retarg.length;i++)retarg[i]="_"+i;
eval("var ret=function("+retarg+"){return args.callee.apply(this,Array.prototype.slice.call(args).concat(Array.prototype.slice.call(arguments)));}");
return currying(ret);
}
else return func.apply(this,arguments);
}
}
// ///
function f(a,b,c)
... {
alert([a,b,c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
</ script >
function currying(func)
... {
return function()
...{
if(arguments.length<func.length)
...{
var args=arguments;
var retarg=new Array(func.length-arguments.length);
for(var i=0;i<retarg.length;i++)retarg[i]="_"+i;
eval("var ret=function("+retarg+"){return args.callee.apply(this,Array.prototype.slice.call(args).concat(Array.prototype.slice.call(arguments)));}");
return currying(ret);
}
else return func.apply(this,arguments);
}
}
// ///
function f(a,b,c)
... {
alert([a,b,c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
</ script >
muxrwc 版
<
script type
=
"
text/ecmascript
"
>
function currying(func) ... {
return function () ...{
var root = this, args = arguments, sourceFunc = args.callee;
if (args.length < func.length) ...{
return function () ...{
return sourceFunc.apply(
root
, Array.prototype.slice.call(args).concat(
Array.prototype.slice.call(arguments)
)
);
};
} else return func.apply(this, args);
};
}
// ///
var f = function (a, b, c) ... {
alert([a, b, c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
cuf( 1 , 2 , 3 );
</ script >
function currying(func) ... {
return function () ...{
var root = this, args = arguments, sourceFunc = args.callee;
if (args.length < func.length) ...{
return function () ...{
return sourceFunc.apply(
root
, Array.prototype.slice.call(args).concat(
Array.prototype.slice.call(arguments)
)
);
};
} else return func.apply(this, args);
};
}
// ///
var f = function (a, b, c) ... {
alert([a, b, c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
cuf( 1 , 2 , 3 );
</ script >
月版^^
<
script
>
function currying(func)
... {
return function()
...{
var args = Array.prototype.slice.call(arguments,0);
if(args.length<func.length)
...{
return function()...{
var _args = args.concat(Array.prototype.slice.call(arguments,0));
return currying(func).apply(this,_args);
}
}
else return func.apply(this,args);
}
}
// ///
function f(a,b,c)
... {
alert([a,b,c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
</ script >
function currying(func)
... {
return function()
...{
var args = Array.prototype.slice.call(arguments,0);
if(args.length<func.length)
...{
return function()...{
var _args = args.concat(Array.prototype.slice.call(arguments,0));
return currying(func).apply(this,_args);
}
}
else return func.apply(this,args);
}
}
// ///
function f(a,b,c)
... {
alert([a,b,c]);
}
var cuf = currying(f);
cuf( 1 )( 2 )( 3 );
cuf( 1 , 2 )( 3 );
</ script >