Применить список функций к значению может быть в Javascript
Я использую ramda-fantasy
для монад. У меня есть строка внутри может быть и некоторые функции, которые будут выполнять регулярные выражения в строке и возвращать Maybe String
,
Как я могу сопоставить, возможно, применить все функции и объединить результат?
я имею
const fieldRetrievers = [
getAddress,
getName,
getPhone,
]
const text = Maybe.of("a text")
// I want to define
// List (String -> Maybe String) -> Maybe String -> Maybe String
function getInfo(retrievers, maybeText) {...}
Как я могу это сделать?
1 ответ
Ты ищешь composeK
Композиция функций над монадными структурами ("стрелки Клейсли").
В основном ваша результирующая функция должна повторяться chain
на вход:
text.chain(getAddress).chain(getName).chain(getPhone)
который вы могли бы реализовать с помощью reduce
по вашему массиву функций:
R.reduce((m, f) => m.chain(f), text, fieldRetrievers)
так что вы бы написали
const getInfo = R.flip(R.reduce(R.flip(R.chain)))