代码之家  ›  专栏  ›  技术社区  ›  Flame_Phoenix

用简单的也许功能出错

  •  1
  • Flame_Phoenix  · 技术社区  · 6 年前

    背景

    我正试着帮助斯塔克弗洛夫的人,问一个关于未来、可能和Eithers的问题。我的第一个方法是使用一个简单的函数 Maybe 计算一些东西。

    代码

    我在使用圣殿,但这相当于拉姆达或任何其他图书馆。

    const S = require("sanctuary");
    
    const transform = S.map(
      S.pipe( [ S.trim, S.toUpper ] )
    );
    
    S.Maybe.Just( ["  heello", "  world!"] )
      .map( transform )
    

    问题

    问题是 简单函数 因错误而失败:

    类型错误:S.may.Just(…).map不是函数

    问题

    我一点也不糊涂。我知道也许是单子,单子是函子。每个函子必须有 map 方法,但不知何故可能。只是(哪种类型可能)不是?

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Matías Fidemraizer    6 年前

    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!']))
    
    推荐文章