| // 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(); | |
| }
 |