1 | // Generated by LiveScript 1.6.0
|
---|
2 | var apply, curry, flip, fix, over, memoize, toString$ = {}.toString;
|
---|
3 | apply = curry$(function(f, list){
|
---|
4 | return f.apply(null, list);
|
---|
5 | });
|
---|
6 | curry = function(f){
|
---|
7 | return curry$(f);
|
---|
8 | };
|
---|
9 | flip = curry$(function(f, x, y){
|
---|
10 | return f(y, x);
|
---|
11 | });
|
---|
12 | fix = function(f){
|
---|
13 | return function(g){
|
---|
14 | return function(){
|
---|
15 | return f(g(g)).apply(null, arguments);
|
---|
16 | };
|
---|
17 | }(function(g){
|
---|
18 | return function(){
|
---|
19 | return f(g(g)).apply(null, arguments);
|
---|
20 | };
|
---|
21 | });
|
---|
22 | };
|
---|
23 | over = curry$(function(f, g, x, y){
|
---|
24 | return f(g(x), g(y));
|
---|
25 | });
|
---|
26 | memoize = function(f){
|
---|
27 | var memo;
|
---|
28 | memo = {};
|
---|
29 | return function(){
|
---|
30 | var args, res$, i$, to$, key, arg;
|
---|
31 | res$ = [];
|
---|
32 | for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
|
---|
33 | res$.push(arguments[i$]);
|
---|
34 | }
|
---|
35 | args = res$;
|
---|
36 | key = (function(){
|
---|
37 | var i$, ref$, len$, results$ = [];
|
---|
38 | for (i$ = 0, len$ = (ref$ = args).length; i$ < len$; ++i$) {
|
---|
39 | arg = ref$[i$];
|
---|
40 | results$.push(arg + toString$.call(arg).slice(8, -1));
|
---|
41 | }
|
---|
42 | return results$;
|
---|
43 | }()).join('');
|
---|
44 | return memo[key] = key in memo
|
---|
45 | ? memo[key]
|
---|
46 | : f.apply(null, args);
|
---|
47 | };
|
---|
48 | };
|
---|
49 | module.exports = {
|
---|
50 | curry: curry,
|
---|
51 | flip: flip,
|
---|
52 | fix: fix,
|
---|
53 | apply: apply,
|
---|
54 | over: over,
|
---|
55 | memoize: memoize
|
---|
56 | };
|
---|
57 | function curry$(f, bound){
|
---|
58 | var context,
|
---|
59 | _curry = function(args) {
|
---|
60 | return f.length > 1 ? function(){
|
---|
61 | var params = args ? args.concat() : [];
|
---|
62 | context = bound ? context || this : this;
|
---|
63 | return params.push.apply(params, arguments) <
|
---|
64 | f.length && arguments.length ?
|
---|
65 | _curry.call(context, params) : f.apply(context, params);
|
---|
66 | } : f;
|
---|
67 | };
|
---|
68 | return _curry();
|
---|
69 | } |
---|