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