| var _curry2 = |
| /*#__PURE__*/ |
| require("./internal/_curry2"); |
| |
| var _isFunction = |
| /*#__PURE__*/ |
| require("./internal/_isFunction"); |
| |
| var and = |
| /*#__PURE__*/ |
| require("./and"); |
| |
| var lift = |
| /*#__PURE__*/ |
| require("./lift"); |
| /** |
| * A function which calls the two provided functions and returns the `&&` |
| * of the results. |
| * It returns the result of the first function if it is false-y and the result |
| * of the second function otherwise. Note that this is short-circuited, |
| * meaning that the second function will not be invoked if the first returns a |
| * false-y value. |
| * |
| * In addition to functions, `R.both` also accepts any fantasy-land compatible |
| * applicative functor. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.12.0 |
| * @category Logic |
| * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) |
| * @param {Function} f A predicate |
| * @param {Function} g Another predicate |
| * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. |
| * @see R.and |
| * @example |
| * |
| * const gt10 = R.gt(R.__, 10) |
| * const lt20 = R.lt(R.__, 20) |
| * const f = R.both(gt10, lt20); |
| * f(15); //=> true |
| * f(30); //=> false |
| * |
| * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false) |
| * R.both([false, false, 'a'], [11]); //=> [false, false, 11] |
| */ |
| |
| |
| var both = |
| /*#__PURE__*/ |
| _curry2(function both(f, g) { |
| return _isFunction(f) ? function _both() { |
| return f.apply(this, arguments) && g.apply(this, arguments); |
| } : lift(and)(f, g); |
| }); |
| |
| module.exports = both; |