scalaz验证和列出monad

san*_*jib 6 validation scala scalaz

我想提出类似于以下内容的东西:

val s: Validation[String, Int] = 1.success
def s2(i: Int): Validation[String, Int] = i.success

val result = for {
  i <- s
  j <- List(1, 2)
  k <- s2(j)
} yield "fine";
Run Code Online (Sandbox Code Playgroud)

上面的代码没有编译,我理解,从语法上讲它没有意义.

我试图以monadic方式执行验证列表.我如何实现这一目标?

Ale*_*nov 8

如果您有一个验证列表A,您可以将其转换为A使用列表的验证sequence:

List(1, 2).map(s2).sequence[({type l[a]=Validation[String, a]})#l, Int] 
Run Code Online (Sandbox Code Playgroud)

(如果我理解正确的话).所以你得到了

val result = for {
  i <- s
  k <- List(1, 2).map(s2).sequence[({type l[a]=Validation[String, a]})#l, Int] 
} yield "fine"
Run Code Online (Sandbox Code Playgroud)