Оперируя двумя вариантами
Предположим, у вас есть следующий код:
import R from "ramda";
import S from "sanctuary";
import { Left, Right } from "sanctuary-either";
const add = R.curry((p1, p2) => p1 + p2);
const addOne = add(1);
const func1 = () => Right(2);
const func2 = () => Right(7);
Объединение addOne
с func1
или func2
относительно просто:
const res = R.compose(
S.map(addOne),
func1
)();
но как можно позвонить add
с помощью func1
а также func2
в качестве аргументов?
ps Я знаю, что Ramda предлагает add
функция. Рассмотрим этот пример как абстракцию проблемы реального мира.
1 ответ
Решение
Вы, наверное, ищете lift2
функция:
const addEithers = S.lift2(add)
console.log(addEithers(func1())(func2()))
В качестве альтернативы вы можете использовать ap
:
S.ap(S.map(add)(func1()))(func2())