我想知道是否有办法List[Kleisli[Option, Int, Int]]
转向Kleisli[Option, Int, List[Int]]
.
特别是我有这样的 kleisli 列表:
def k(a: String) = Kleisli[Option, Int, Int](m => Some(a.length * m))
val kList = List("hi", "hello").map(k)
我做的是以下
Kleisli[Option, Int, List[Int]](m => kList.map(_.run(m)).sequence)
这非常混乱,没有表现力,需要大量的手工工作。
有没有更好的办法?