我在一个项目中使用scalaz7,有时我在导入方面遇到问题。最简单的开始方式是
import scalaz._
import Scalaz._但有时这会导致冲突。到目前为止,我一直在做的事情有以下几个痛苦的过程:
-Xprint:typer编译它,以了解代码如何处理隐式解析。虽然这是可行的,但我想精简它。我看到scalaz7有更细粒度的导入,但我并不完全理解它们是如何组织的。例如,我看到一个人可以做到
import scalaz.std.option._
import scalaz.std.AllInstances._
import scalaz.std.AllFunctions._
import scalaz.syntax.monad._
import scalaz.syntax.all._
import scalaz.syntax.std.boolean._
import scalaz.syntax.std.all._诸若此类。
这些子进口是如何组织的?
举个例子,假设我想处理验证问题。例如,我需要什么来注入验证并进行下面的编译?
3.fail[String]如何使ValidationNEL[A, B]成为Applicative的一个实例?
发布于 2012-11-13 13:02:49
这篇博文详细解释了包结构,并详细地导入了scalaz7中的la点菜:http://eed3si9n.com/learning-scalaz-day13。
对于具体的示例,对于3. 3.failureString,您需要:
import scalaz.syntax.validation._验证已经有了一个方法ap
scala> "hello".successNel[Int] ap ((s: String) => "x"+s).successNel[Int]
res1: scalaz.Validation[scalaz.NonEmptyList[Int],java.lang.String] = Success(xhello)要获得<*>操作符,您需要以下导入:
import scalaz.syntax.applicative._然后你就可以:
"hello".successNel[Int] <*> ((s: String) => "x"+s).successNel[Int]https://stackoverflow.com/questions/13358213
复制相似问题