3
ile seçeneği birleştirmek nasıl bir Option[A]
Kleisli
Benim ilk denemede ile çalışan bir bağdaştırıcının gereken bir yöntem
def f[A, B, C](a: A) : Kleisli[Future, B, C] = ???
Verilen oldu:
def g[A, B, C](a: Option[A], default: => C) = a match {
case Some(a) => save(a)
case None => Kleisli[Future, B, C] { _ => Future.successful(default) }
}
Ama How to combine sequence of Kleisli okuduktan sonra, geldim Daha iyi bir sürümle birlikte:
def g[A, B, C](a: Option[A], default: => C) : Kleisli[Future, B, C] =
a.traverseU(f[A, B, C]).map(_.getOrElse(default))
Gelişmek için bir fikrin var mı?
Bana iyi görünüyor. Ayrıca 'a' üzerinde '' '' '' yı '' kullanabilirsiniz ve boş '' için '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'ı boş bir tarafa bir' Kleisli' içine kaldırabilirsiniz, ancak bu herhangi bir hoş bitmek olası değildir –