Как извлечь значение из монад в 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

Другие вопросы по тегам