【问题标题】:Monoid instance for A => A in CatsCats 中 AN => A 的 Monoid 实例
【发布时间】:2017-03-18 08:27:02
【问题描述】:

函数A => A 是幺半群,identityempty,组合为combine。不幸的是,我在cats 库中没有找到它。库是否为这些函数提供了一个 monoid 实例?

A => M[A] 怎么样,M 是单子或应用程序?

【问题讨论】:

    标签: scala functional-programming monoids scala-cats


    【解决方案1】:

    Cats 在 instances/function.scala 中有一个 A => A 的 Monoid 实例。

    A => M[A] 用于 Monad M 接缝形成一个 Monoid,a => M.pure(a)empty 以下combine op:

    def compose(f1 = A => M[A], f2 = A => M[A]): A => M[A] =
      a => f1(a).flatMap { e => f2(e) }
    

    这不会在库中实现。
    Monoid 定律的证明留给读者作为练习。

    【讨论】:

    • 非常感谢。是X => A[X],哪里是A是Applicative,一个幺半群?
    • 单子只是内函子范畴中的一个幺半群,有什么问题?
    • @Michael 你能写一个没有flatMapcombine op 吗?
    • 也许不是。我应该考虑一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多