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

}