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.
		
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							1.5 KiB
						
					
					
				// 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(); | 
						|
} |