Я рассматриваю функции обработки, которые возвращают обещания с функциями Ramda, отличными от pipeP. Я пытаюсь сравнить функции (один из которых возвращает обещание) с равными, как это:Обработка асинхронного программирования с помощью Ramda
getSectionFromDb :: obj -> promise
getSectionFromData :: obj -> number
R.equals(
getSectionFromDb,
getSectionFromData
)
Есть два фактора при игре здесь. Сначала R.equals не будет оценивать функции, но большая проблема заключается в том, что я сравниваю обещание с числом.
Есть ли функциональный способ делать такие вещи (я знаю, что функции не являются ссылочными прозрачными, но должен быть способ борьбы с io)? Есть ли способ Рамды сделать это?
Спасибо.
Звучит так, будто вы хотите «поднять» функцию 'equals' - сначала в монаде обещаний, а затем в аппликативной функции; К сожалению, Рамда может только подбирать списки. – Bergi
Значит, вам нужна функция '??? :: (obj -> Promise) -> (obj -> number) -> (obj -> Promise ) '? –
Bergi
@ Bergi: документация Рамды здесь не совсем подходит, но «поднять» ** [работает на произвольных «аппликативных функциях»] (https://github.com/ramda/ramda/blob/master/test/liftN .js # L42-L45) **. –