背后的原因是什么列表.填充是用两组参数定义的,而不是用n和elem参数一起定义的
当前定义
def fill[A](n: Int)(elem: â A): CC[A]
def fill[A](n: Int, elem: â A): CC[A]
这不是不必要的样板吗?或者它是为了使用第一部分( List.fill(n)
List.fill(n)
你可以写
List.fill(10){ val r = math.random; r * r }
但你不能写
List.fill(10, r = math.random; r * r)
和
List.fill(10, {r = math.random; r * r})
看起来有点尴尬。
def map[X, Y](a: F[X])(f: X => Y): F[Y]
在大多数情况下,在没有任何类型注释的情况下工作得非常好,但是
def map[X, Y](a: F[X], f: X => Y): F[Y]
ap , ap2 或 map2 in this piece of code ,例如。参数列表之所以如此,有一个很好的原因,如果它们的定义不同,您会立即注意到这一点。
ap
ap2
map2