- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些代码如下:
import scalaz._
import Scalaz._
case class Foo(i: Int)
type ValidatedNel[A] = ValidationNel[String, A]
val foos: Seq[ValidatedNel[Foo]] = Seq(Success(Foo(1)), Success(Foo(2)), Failure(NonEmptyList("3 failed")), Failure(NonEmptyList("4 failed")))
val validated: ValidatedNel[Seq[Foo]] = foos.sequence[ValidatedNel, Foo]
这在编译期间失败并出现此错误:
Error:(51, 50) could not find implicit value for parameter F0: scalaz.Traverse[Seq] val validated: ValidatedNel[Seq[Foo]] = foos.sequence[ValidatedNel, Foo]
Error:(51, 50) not enough arguments for method ToTraverseOps: (implicit F0: scalaz.Traverse[Seq])scalaz.syntax.TraverseOps[Seq,scalaz.package.ValidationNel[String,Foo]]. Unspecified value parameter F0. val validated: ValidatedNel[Seq[Foo]] = foos.sequence[ValidatedNel, Foo]
我想在我给出的示例中得到这样的最终结果:
val validated = Failure(NonEmptyList("3 failed", "4 failed"))
如果 foos
只有 Success
而没有 Failure
,我希望看到它们的简单顺序:Success( Foo(1), Foo(2))
.
为什么会出现我提到的编译失败?据我了解,这应该基于类型。
这是否与类型别名解包有关 A[B[C[D], E]] => B[C[D, A[E]]
而不是 A[B[C]] => B[A[C]]
?
最佳答案
据我所知,scalaz 中没有 Traverse[Seq]
的实例。您可以将 Seq
替换为 List
或对其进行转换,或者实现 Traverse[Seq]
(implicit val seqInstance: Traverse[Seq ] = ???
).
import scalaz._
import Scalaz._
case class Foo(i: Int)
type ValidatedNel[A] = ValidationNel[String, A]
val foos: List[ValidatedNel[Foo]] = List(Success(Foo(1)), Success(Foo(2)), Failure(NonEmptyList("3 failed")), Failure(NonEmptyList("4 failed")))
val validated: ValidatedNel[List[Foo]] = foos.sequence[ValidatedNel, Foo]
关于scala - 找不到用于排序的 Traverse Seq[ValidationNel[String, MyCaseClass]] => ValidationNel[String, Seq[MyCaseClass]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113717/
如何转换 val source: Map[MyKeyType, ValidationNel[MyErrorType, MyValueType]] 到 val target: ValidationNel
是否有一种标准方法可以将左侧展平成一个列表? 谢谢! 最佳答案 我不确定您要做什么,但是 Monoid 实例应该可以解决问题: scala> List( | println("test"
我有一些代码如下: import scalaz._ import Scalaz._ case class Foo(i: Int) type ValidatedNel[A] = ValidationNe
我有一个具有以下签名的函数 def reject[A](errors: List[String]): ValidationNEL[String, A] 由于这是一个拒绝方法,类型 A永远不会被退回,但
让我们假设一个使用构建器模式构造的对象。 该构建器模式将包含build方法,该方法专注于字段验证,然后转换为目标类型。 可以使用以下方法实现此验证: Either[FailureObject, Tar
我是一名优秀的程序员,十分优秀!