Quando ho guardato scalaz.effect.IO
codice sorgente, ho notato che ha un metodo apply
con la seguente firma:Cosa sono Tower [A] e IvoryTower in Scalaz?
sealed trait IO[A] {
def apply(rw: Tower[IvoryTower]): Trampoline[(Tower[IvoryTower], A)]
}
Tower[A]
e IvoryTower
sono definite come:
case class Tower[A]()
sealed trait IvoryTower
C'è un esempio di Tower
:
object IvoryTower extends IvoryTowers
trait IvoryTowers {
val ivoryTower = Tower[IvoryTower]()
}
Qual è lo scopo di questo e classi? Perché lo IO.apply
accetta un argomento di tipo Tower[IvoryTower]
?
Anch'io vorrei che Scalaz fosse documentato. – rightfold