首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将kleisli与条件组合

如何将kleisli与条件组合
EN

Stack Overflow用户
提问于 2016-04-11 09:41:45
回答 1查看 49关注 0票数 0

给出一种现有方法f

代码语言:javascript
复制
def f : Kleisli[Future, Context, Seq[Tip]] = ???

我需要一个组合器,它将根据条件使用f。以下是我目前的想法:

代码语言:javascript
复制
def g(selected: Seq[Tip]) = 
    if (selected.isEmpty) 
      f 
    else 
      Kleisli[Future, Context, Seq[Tip]] { _ => Future.successful(selected.maxsBy(_.creationDate))}

有更好的办法吗?

(将单个值提升到Kleisli中的部分相当冗长)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-11 11:05:31

如果您正在寻找更短的方法将Seq[Tip]提升到您的Kleisli中:您可以使用askmap

代码语言:javascript
复制
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

代码语言:javascript
复制
import scalaz.syntax.std.function1._

((ctx: Context) => selected.maxsBy(_.creationDate)).kleisli[Future]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36545062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档