Ошибка с просто возможно функцией
Фон
Я пытаюсь помочь кому-то в Stackru с вопросом о Фьючерсах, Maybes и Eithers. Мой первый подход заключается в том, чтобы иметь простую функцию, которая принимает Maybe
и что-то вычисляет.
Код
Я использую Sanctuary, но это эквивалентно Ramda или любой другой библиотеке.
const S = require("sanctuary");
const transform = S.map(
S.pipe( [ S.trim, S.toUpper ] )
);
S.Maybe.Just( [" heello", " world!"] )
.map( transform )
проблема
Проблема в том, что эта простая функция завершается с ошибкой:
Ошибка типа: S.Maybe.Just(...). Map не является функцией
Вопрос
Я смущен по меньшей мере. Я знаю, что Может быть, это Монада, и что Монады являются Функторами. Каждый функтор должен иметь map
метод, но каким-то образом Maybe.Just (который является типом Maybe) нет?
Что я делаю неправильно?
1 ответ
Maybe
является функтором и имеет fantasy-land/map
прикреплен, и он потребляется с помощью S.map
, Кроме того, вы строите Just
с помощью S.Just
или же S.of (S.Maybe)
:
const S = require("sanctuary");
const transform = S.pipe ([ S.trim, S.toUpper ])
const maybeTransformed = S.map (transform) (S.Just (['hello', ' world!']))