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)
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)