Оперируя двумя вариантами

Предположим, у вас есть следующий код:

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())
Другие вопросы по тегам