Ejemplo n.º 1
0
def allPass(preds):
    '''
    '''
    arity = max([len(inspect.getargspec(pred).args) for pred in preds])

    def inner(*args):
        for fn in preds:
            if not fn(*args):
                return False
        return True
    return _curryN(arity, inner)
Ejemplo n.º 2
0
def curry(fn):
    '''
    Returns a curried equivalent of the provided function. The curried function
    has two unusual capabilities. First, its arguments needn't be provided one
    at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the
    following are equivalent:
          - `g(1)(2)(3)`
      - `g(1)(2, 3)`
      - `g(1, 2)(3)`
      - `g(1, 2, 3)`
        Secondly, the special placeholder value `R.__` may be used to specify
    "gaps", allowing partial application of any combination of arguments,
    regardless of their positions. If `g` is as above and `_` is `R.__`, the
    following are equivalent:
          - `g(1, 2, 3)`
      - `g(_, 2, 3)(1)`
      - `g(_, _, 3)(1)(2)`
      - `g(_, _, 3)(1, 2)`
      - `g(_, 2)(1)(3)`
      - `g(_, 2)(1, 3)`
      - `g(_, 2)(_, 3)(1)`
        @func
    @memberOf R
    @since v0.1.0
    @category Function
    @sig (* -> a) -> (* -> a)
    @param {Function} fn The function to curry.
    @return {Function} A new, curried function.
    @see R.curryN
    @example
             var addFourNumbers = (a, b, c, d) => a + b + c + d;
             var curriedAddFourNumbers = R.curry(addFourNumbers);
         var f = curriedAddFourNumbers(1, 2);
         var g = f(3);
         g(4); //=> 10
    '''
    return _curryN(len(inspect.getargspec(fn).args), fn)