Ошибка с просто возможно функцией

Фон

Я пытаюсь помочь кому-то в 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!']))
Другие вопросы по тегам