Étant donné:`then` sur Kleisli de différents types d'entrée?
import scalaz._, Scalaz._
import scalaz.concurrent.Task
case class AppConfig(x: Int, y: String)
val x = Kleisli[Task, Int, Boolean] {
case i: Int => if (i === 42) Task.now(true) else Task.now(false)
}
val y = Kleisli[Task, String, Unit] {
case s: String => Task.delay { println(s"$s was here") }
}
Je ne peux pas appeler x >> y
en raison de la compilation a échoué:
scala> x >> y
<console>:21: error: type mismatch;
found : scalaz.Kleisli[scalaz.concurrent.Task,String,Unit]
required: scalaz.Kleisli[scalaz.concurrent.Task,Int,?]
x >> y
^
En conséquence, est-il raisonnable de changer x
et types de y
de Kleisli[Task, Int, Boolean]
et Kleisli[Task, String, Boolean]
-Kleisli[Task, AppConfig, Boolean]
?
Sinon, veuillez suggérer une meilleure alternative et votre justification.