3

有没有一种标准方法可以将左侧展平为一个列表?

谢谢!

4

2 回答 2

3

我不确定您要做什么,但是该Monoid实例应该可以解决问题:

scala> List(
     |   println("test").successNel[String],
     |   "a".failNel[Unit],
     |   "b".failNel[Unit]
     | ).suml == Failure(NonEmptyList("a", "b"))
test
res0: Boolean = true

哪里suml是一个方法,它被添加到任何包含Monoid实例的集合上。

于 2012-10-03T15:58:40.320 回答
1

好的,这是一些可以解决问题的代码:

scala> type MyValidationNEL[A] = ValidationNEL[String, A]
defined type alias MyValidationNEL

scala> val x: List[MyValidationNEL[Unit]] = 
     | List("a".failNel, "b".failNel)
x: List[MyValidationNEL[Unit]] = List(Failure(NonEmptyList(a)), Failure(NonEmptyList(b)))

scala> x.sequence
res57: MyValidationNEL[List[Unit]] = Failure(NonEmptyList(a, b))

scala> 

我已经从这个演示文稿中提取了部分示例: http ://www.scribd.com/doc/93526802/Bjarnason-Scalaz by Rúnar Bjarnason http://scalaz.org

于 2012-10-03T19:00:51.767 回答