Blame view

node_modules/prelude-ls/lib/Func.js 1.53 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  // 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();
  }