简单的 Maybe 函数出错

Error with simply Maybe funtion

背景

我正在尝试帮助 Whosebug 中的某个人解决有关 Futures、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 )

问题

问题是这个 简单函数 失败并出现错误:

TypeError: S.Maybe.Just(...).map is not a function

问题

至少可以说我很困惑。我知道 Maybe 是一个 Monad,而 Monad 是 Functor。每个 Functor 都必须有一个 map 方法,但是不知何故 Maybe.Just (这是一个 Maybe 类型)没有?

我做错了什么?

Maybe 是一个仿函数并附加了一个 fantasy-land/map,它使用 S.map 消耗。此外,您使用 S.JustS.of (S.Maybe):

构建 Just
const S = require("sanctuary");

const transform = S.pipe ([ S.trim, S.toUpper ])

const maybeTransformed = S.map (transform) (S.Just (['hello', ' world!']))