1

背景

我正在尝试帮助 StackOverflow 中的某个人解决有关 Futures、Maybes 和 Eithers 的问题。我的第一种方法是有一个简单的函数来接受 aMaybe并计算一些东西。

代码

我正在使用 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 不是函数

问题

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

我究竟做错了什么?

4

1 回答 1

3

Maybe是一个仿函数并且有一个fantasy-land/map附加的,它使用S.map. 此外,您构建一个Justusing S.Justor 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!']))
于 2018-07-30T08:54:09.437 回答