为什么作者添加第三个参数:bbb: B => B => B
从b到b到b是什么意思,为什么我们需要这样的东西?
让我们说我们更进一步,并介绍更多 多态进入代码,隐藏第二个参数的事实 和返回值是列表:
foo :: forall a b. List a -> (a -> b) -> (b -> b -> b) -> b -> b
def foo[A, B](as: List[A], b: B, ab: A => B, bbb: B => B => B): B
为什么突然出现从a到b的转换函数:ab: A => B
我们在原始代码中没有这个,为什么会添加?
答案 0 :(得分:4)
稍后在帖子中暗示了进一步的通用版本:
expect ftpScript myToken filesToSend/*
半群只是一种支持二进制附加操作的结构,例如
foo :: forall f a r. (Foldable f, Semigroup r) => f a -> (a -> r) -> r -> r
所以trait Semigroup[T] {
def append(v1: T, v2: T): T
}
接受一个输入列表,一个函数将每个列表元素映射到一个适当的半群实例(函数foo
和一个半群的a -> b
操作。最后{{} 1}}参数是要累积的初始值。
append
然后简单地遍历列表,将当前累加器与当前列表项关联的值组合在一起。
b
列表形成一个半群,其中foo
只附加两个列表。