The power of projections

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

Previous post Next post
Up