2017-09-11 5 views

答えて

0

アイデンティティを使用してモナド値にマッピングを行うことが可能です:

def combine[I, A](k: Kleisli[Try, I, A], default: A): I => A = 
    k.mapF[Id, A](_.getOrElse(default)).run 

例:

scala> val div = Kleisli[Try, Int, String](x => Try(1000/x).map(_.toString)) 
div: cats.data.Kleisli[scala.util.Try,Int,String] = Kleisli(<function1>) 

scala> combine(div, "Good")(10) 
res0: String = 100 

scala> combine(div, "Division by zero")(0) 
res1: String = Division by zero 
関連する問題