| var chain = |
| /*#__PURE__*/ |
| require("./chain"); |
| |
| var compose = |
| /*#__PURE__*/ |
| require("./compose"); |
| |
| var map = |
| /*#__PURE__*/ |
| require("./map"); |
| /** |
| * Returns the right-to-left Kleisli composition of the provided functions, |
| * each of which must return a value of a type supported by [`chain`](#chain). |
| * |
| * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), f)`. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.16.0 |
| * @category Function |
| * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z) |
| * @param {...Function} ...functions The functions to compose |
| * @return {Function} |
| * @see R.pipeK |
| * @deprecated since v0.26.0 |
| * @example |
| * |
| * // get :: String -> Object -> Maybe * |
| * const get = R.curry((propName, obj) => Maybe(obj[propName])) |
| * |
| * // getStateCode :: Maybe String -> Maybe String |
| * const getStateCode = R.composeK( |
| * R.compose(Maybe.of, R.toUpper), |
| * get('state'), |
| * get('address'), |
| * get('user'), |
| * ); |
| * getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY") |
| * getStateCode({}); //=> Maybe.Nothing() |
| * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a))) |
| */ |
| |
| |
| function composeK() { |
| if (arguments.length === 0) { |
| throw new Error('composeK requires at least one argument'); |
| } |
| |
| var init = Array.prototype.slice.call(arguments); |
| var last = init.pop(); |
| return compose(compose.apply(this, map(chain, init)), last); |
| } |
| |
| module.exports = composeK; |