7

假设我有一个 Doobie 程序列表(全部带有Unit类型参数,fwiw):

val progList: List[ConnectionIO[Unit]] = prog1 :: prog2 :: ... :: Nil

有什么办法可以在一笔交易中运行它们吗?在这里理解是行不通的,因为我只知道运行时程序列表的精确组成。本质上,我想我需要将它们折叠在一起。

我想这个问题一般适用于 Cats 中的 Free Monads,所以我也会标记 Cats。谢谢。

4

1 回答 1

13

你可以用.sequencefrom cats 做到这一点:

import doobie.implicits._
import cats.implicits._

...

val res = progList.sequence // ConnectionIO[List[Unit]]
于 2018-07-29T16:18:56.297 回答