Как извлечь значение из монад в javascript-библиотеке Crocks
Я понимаю, что монады обычно не хотят разворачивать базовое значение, потому что оно может существовать, а может и не существовать. В моем случае использования я хотел бы использовать методы функционального программирования, используя ramda для функциональной библиотеки и Crocks для библиотеки алгебраической структуры данных для написания кода в не полностью функциональной кодовой базе. Обычно я собираюсь использовать монады Either, IO и Maybe для написания моего кода, но затем извлекаю окончательный результат из полученной монады, чтобы я мог вернуть значение функции, которая еще не предназначена для приема монад.
В сказке есть что-то под названием
getOrElse
который вернет значение или строку undefined/error. Это очень полезно и позволяет мне писать функционально в среде, которая не предполагает обработки монад. Есть ли у Crocks что-то подобное или есть другой способ развернуть Either, IO или Maybe?
Сказочный пример, который я хотел бы воспроизвести в Crocks:
const simpleFunction = (a) => {
myMaybe = Maybe.of(a);
// some random transformations on myMaybe
// this will fall back to the second case if the maybe is empty
return myMaybe.getOrElse() || doSomethingElseOnError();
}
1 ответ
Посмотрите пример здесь, https://crocks.dev/docs/crocks/Result.html#either или https://crocks.dev/docs/crocks/Maybe.html#either, я думаю, что он ближе всего к тому, что вы ' повторно пытаюсь сделать.
По сути, вы касаетесь раскрытия ценности. В этом сценарии вам нужно убедиться, что вы можете
Maybe a
и передать две функции, которые
() -> b
и
a -> b
где
b
это возвращаемое значение вашей функции, которая не хочет возвращать
Monad