相关疑难解决方法(0)

scalaz中的函数语法益智游戏

在观看Nick Partidge关于导出scalaz的演示之后,我开始看这个例子,这真是太棒了:

import scalaz._
import Scalaz._
def even(x: Int) : Validation[NonEmptyList[String], Int] 
    = if (x % 2 ==0) x.success else "not even: %d".format(x).wrapNel.fail

println( even(3) <|*|> even(5) ) //prints: Failure(NonEmptyList(not even: 3, not even: 5))
Run Code Online (Sandbox Code Playgroud)

我试图了解<|*|>方法正在做什么,这里是源代码:

def <|*|>[B](b: M[B])(implicit t: Functor[M], a: Apply[M]): M[(A, B)] 
    = <**>(b, (_: A, _: B))
Run Code Online (Sandbox Code Playgroud)

好的,这是相当令人困惑的(!) - 但它引用了<**>声明的方法:

def <**>[B, C](b: M[B], z: (A, B) => C)(implicit t: Functor[M], a: Apply[M]): M[C] 
    = a(t.fmap(value, z.curried), …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala scala-2.8 scalaz

51
推荐指数
1
解决办法
5067
查看次数

标签 统计

functional-programming ×1

scala ×1

scala-2.8 ×1

scalaz ×1