| // Generated by LiveScript 1.4.0 |
| var apply, curry, flip, fix, over, memoize, slice$ = [].slice, 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, key, arg; |
| args = slice$.call(arguments); |
| 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(); |
| } |