【发布时间】:2017-03-18 08:27:02
【问题描述】:
函数A => A 是幺半群,identity 为empty,组合为combine。不幸的是,我在cats 库中没有找到它。库是否为这些函数提供了一个 monoid 实例?
A => M[A] 怎么样,M 是单子或应用程序?
【问题讨论】:
标签: scala functional-programming monoids scala-cats
函数A => A 是幺半群,identity 为empty,组合为combine。不幸的是,我在cats 库中没有找到它。库是否为这些函数提供了一个 monoid 实例?
A => M[A] 怎么样,M 是单子或应用程序?
【问题讨论】:
标签: scala functional-programming monoids scala-cats
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,一个幺半群?
flatMap 的combine op 吗?