此功能的实际用例是什么?

蓝天

此功能的实际用例是什么:

def functionMonoid[A,B](B : Monoid[B]) : Monoid[A => B] = 
    new Monoid[A => B] {
        def op(f : A => B, g : A => B) = a => B.op(f(a) , g(a))
        val zero: A => B = a => B.zero
    }

这摘自《 Scala中的功能编程》一书。

所以

val intAddition = new Monoid[Int] {
    def op(a1 : Int, a2 : Int) = a1 + a2
    val zero = 0
}
functionMonoid(intAddition)

产生类型: Monoid[A => Int]

特拉维斯·布朗

这是一个更接近“实际用例”的示例。假设我们有某种请求类型:

case class Request(...)

我们还提供了某种Item可以显示在网页或其他UI上的信息:

case class Item(...)

我们有一些方法可以根据请求生成项目:

def userItems(req: Request): List[Item] = ???
def postItems(req: Request): List[Item] = ???
def adItems(req: Request): List[Item] = ???

我们希望通过这些方法运行请求并汇总这些结果。我们可以这样写:

def allItems(req: Request) = userItems(req) ++ postItems(req) ++ adItems(req)

或者我们可以用functionMonoid把一个Monoid[Request => List[Item]]范围,然后写:

val allItems = List(userItems _, postItems _, adItems _).suml

这是否更好?不一定,但这是更通用的,如果您添加更多可能变得有价值的需求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此功能的实际用例是什么?

来自分类Dev

“数组地址”的实际用例是什么?

来自分类Dev

Haskell的init函数的几个实际用例是什么?

来自分类Dev

drive.install-此范围的用例是什么?

来自分类Dev

此编程语言功能的名称是什么?是否有任何支持它的实际语言?

来自分类Dev

基于std :: unordered_(set | map)范围擦除的实际用例是什么?

来自分类Dev

在Linux中典型的实际用例或符号/硬链接的应用是什么?

来自分类Dev

IntStream的用例是什么?

来自分类Dev

此功能的最终参数是什么?

来自分类Dev

是什么使此功能运行慢得多?

来自分类Dev

此功能的复杂性是什么?

来自分类Dev

此功能的增长顺序是什么?

来自分类Dev

此jquery语法的功能是什么?

来自分类Dev

此功能的O标记将是什么?

来自分类Dev

此功能背后的机制是什么?

来自分类Dev

此功能定义的意义是什么?

来自分类Dev

此功能是什么?如何实现?

来自分类Dev

Matlab中的此功能是什么?

来自分类Dev

此功能的作用是什么

来自分类Dev

此jquery语法的功能是什么?

来自分类Dev

此功能的作用是什么?

来自分类Dev

Android Future的用例是什么?

来自分类Dev

原子读取的用例是什么

来自分类Dev

冷观测的用例是什么?

来自分类Dev

git名称空间的用例是什么?

来自分类Dev

git branch -d的用例是什么

来自分类Dev

@Import批注的用例是什么?

来自分类Dev

匿名联合类型的用例是什么

来自分类Dev

glTexParameterIiv和glTexParameterIuiv的用例是什么?