【问题标题】:Why do we need to separate Apply and Applicative type classes?为什么我们需要分离 Apply 和 Applicative 类型的类?
【发布时间】:2018-01-06 05:06:19
【问题描述】:

我在cats documentation 中读到关于类型类ApplyApplicative 的信息。我想知道为什么该库提供两个单独的类型类而不是一个类型类Applicative,它将扩展Functor 并添加ap?有人使用不是ApplicativeApply 吗?

【问题讨论】:

    标签: scala applicative scala-cats


    【解决方案1】:

    Applicative 提供了pure 方法,这是一种“进入”的方式。否则,尽管您可以F[A] 转换为F[B],无论是使用A => B(通过map)还是F[A => B](通过ap),您都没有能力将任何内容放入F。所以你只能让别人为你做这件事。

    Applicative 的不同之处在于你可以把东西放进去,从无到有。

    由于两者都可能有用(“您有权将东西放入F”和“不,请不要动手,并根据您提供的内容进行操作”),ApplicativeApply 是单独的类型类。

    【讨论】:

    • 谢谢。我想我明白了。您能否举一个使用Apply 而不是Applicative 的示例(如“放开你的手,按照你给的东西操作”)?
    • 你可以想象各种情况。例如,如果您有一个想要处理的错误类型,但您不希望它能够生成任何新错误或使用任何不是来自错误上下文的信息,您可能希望您的错误类型具有Apply 类型类,但不是 Applicative 类型类。
    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 2015-10-23
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多