forked from fdzcxy212206413/gsl_grs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.6 KiB
69 lines
1.6 KiB
2 months ago
|
// Generated by LiveScript 1.6.0
|
||
|
var apply, curry, flip, fix, over, memoize, toString$ = {}.toString;
|
||
|
apply = curry$(function(f, list){
|
||
|
return f.apply(null, list);
|
||
|
});
|
||
|
curry = function(f){
|
||
|
return curry$(f);
|
||
|
};
|
||
|
flip = curry$(function(f, x, y){
|
||
|
return f(y, x);
|
||
|
});
|
||
|
fix = function(f){
|
||
|
return function(g){
|
||
|
return function(){
|
||
|
return f(g(g)).apply(null, arguments);
|
||
|
};
|
||
|
}(function(g){
|
||
|
return function(){
|
||
|
return f(g(g)).apply(null, arguments);
|
||
|
};
|
||
|
});
|
||
|
};
|
||
|
over = curry$(function(f, g, x, y){
|
||
|
return f(g(x), g(y));
|
||
|
});
|
||
|
memoize = function(f){
|
||
|
var memo;
|
||
|
memo = {};
|
||
|
return function(){
|
||
|
var args, res$, i$, to$, key, arg;
|
||
|
res$ = [];
|
||
|
for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
|
||
|
res$.push(arguments[i$]);
|
||
|
}
|
||
|
args = res$;
|
||
|
key = (function(){
|
||
|
var i$, ref$, len$, results$ = [];
|
||
|
for (i$ = 0, len$ = (ref$ = args).length; i$ < len$; ++i$) {
|
||
|
arg = ref$[i$];
|
||
|
results$.push(arg + toString$.call(arg).slice(8, -1));
|
||
|
}
|
||
|
return results$;
|
||
|
}()).join('');
|
||
|
return memo[key] = key in memo
|
||
|
? memo[key]
|
||
|
: f.apply(null, args);
|
||
|
};
|
||
|
};
|
||
|
module.exports = {
|
||
|
curry: curry,
|
||
|
flip: flip,
|
||
|
fix: fix,
|
||
|
apply: apply,
|
||
|
over: over,
|
||
|
memoize: memoize
|
||
|
};
|
||
|
function curry$(f, bound){
|
||
|
var context,
|
||
|
_curry = function(args) {
|
||
|
return f.length > 1 ? function(){
|
||
|
var params = args ? args.concat() : [];
|
||
|
context = bound ? context || this : this;
|
||
|
return params.push.apply(params, arguments) <
|
||
|
f.length && arguments.length ?
|
||
|
_curry.call(context, params) : f.apply(context, params);
|
||
|
} : f;
|
||
|
};
|
||
|
return _curry();
|
||
|
}
|