给出一种现有方法f
def f : Kleisli[Future, Context, Seq[Tip]] = ???我需要一个组合器,它将根据条件使用f。以下是我目前的想法:
def g(selected: Seq[Tip]) =
if (selected.isEmpty)
f
else
Kleisli[Future, Context, Seq[Tip]] { _ => Future.successful(selected.maxsBy(_.creationDate))}有更好的办法吗?
(将单个值提升到Kleisli中的部分相当冗长)
发布于 2016-04-11 11:05:31
如果您正在寻找更短的方法将Seq[Tip]提升到您的Kleisli中:您可以使用ask和map:
import scalaz.Kleisli
import scalaz.std.scalaFuture._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
Kleisli.ask[Future, Context] map ( _ => selected.maxsBy(_.creationDate))您还可以将Context => Seq[Tip]转换为您的Kleisli:
import scalaz.syntax.std.function1._
((ctx: Context) => selected.maxsBy(_.creationDate)).kleisli[Future]https://stackoverflow.com/questions/36545062
复制相似问题