을 감안할 때 : 그것은 x
을 변경하는 것이 합리적이다, 그 결과Kleisli의 다른 입력 유형에 '다음'이 있습니까?
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
^
및 Kleisli[Task, Int, Boolean]
에서 y
의 종류와 Kleisli[Task, AppConfig, Boolean]
-Kleisli[Task, String, Boolean]
:
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") }
}
I 실패로 인해 컴파일에 x >> y
를 호출 할 수 없습니다?
그렇지 않은 경우 더 나은 대안과 근거를 제시하십시오.