Aug 03, 2014 22:28
Предположим, что у вас есть интерфейсов с сигнатурами вида
trait DaoPersistence {
def doA(...): Option[A]
def doB(a: A): Option[B]
}
и есть например желание сделать из них, как в хаскеле, ду-нотацию с матюками
поскольку матюки могут в целом быть разные, то можно применять вот такой вот многословный трюк
(for (
myA <- doA(...).toEither("A not defined").right;
myB <- doB(myA).toEither("B is not defined). right
) yield myB ) match {
case Left(msg) ⇒ doSomeError(msg)
case Right(b) ⇒ doComplete(b)
}
и почти хаскель, и никакого ScalaZ.
scala