The power of projections
Предположим, что у вас есть интерфейсов с сигнатурами вида
и есть например желание сделать из них, как в хаскеле, ду-нотацию с матюками
поскольку матюки могут в целом быть разные, то можно применять вот такой вот многословный трюк
и почти хаскель, и никакого ScalaZ.
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.