【问题标题】:Error with simply Maybe funtion简单的 Maybe 函数出错
【发布时间】:2019-01-06 11:26:34
【问题描述】:

背景

我正在尝试帮助 StackOverflow 中的某个人解决有关 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 不是函数

问题

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

我做错了什么?

【问题讨论】:

    标签: javascript functional-programming monads maybe sanctuary


    【解决方案1】:

    Maybe 是一个函子,附加了一个fantasy-land/map,它使用S.map 使用。此外,您可以使用S.Just 或S.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!']))
    

    【讨论】:

    • 您也可以使用S.Maybe.Just 构建一个 Just using,这是我正在使用的方法。谢谢!
    • @Flame_Phoenix 不,S.Maybe.Just 似乎是供 Sanctuary 内部使用的。不要使用它:它不会输入检查。
    • 啊,谢谢提醒。因为代码适用于S.Maybe.Just 和S.Just,所以我想我也可以使用它。原来不是这样的!
    猜你喜欢
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2017-03-23
    相关资源
    最近更新 更多