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