gpt4 book ai didi

scala - 如何将期权与 Kleisli 组合

转载 作者:行者123 更新时间:2023-12-02 04:42:09 25 4
gpt4 key购买 nike

给定一个方法

def f[A, B, C](a: A) : Kleisli[Future, B, C] = ???

我需要一个使用 Option[A] 的组合器

我的第一次尝试是:

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) }
}

但看了之后How to combine sequence of Kleisli ,我想出了一个更好的版本:

def g[A, B, C](a: Option[A], default: => C) : Kleisli[Future, B, C] = 
a.traverseU(f[A, B, C]).map(_.getOrElse(default))

有什么改进的想法吗?

最佳答案

这是@TravisBrown 在评论中建议的想法的实现。

def g[A, B, C](a: Option[A], default: => C) : Kleisli[Future, B, C] =
a.fold(Future(default).liftKleisli[B])(f)

可读性可能更好。

关于scala - 如何将期权与 Kleisli 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36499751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com