比方说,我有一个Doobie程序列表(全部带有Unit
类型参数,fwiw):
val progList: List[ConnectionIO[Unit]] = prog1 :: prog2 :: ... :: Nil
有什么办法可以在一次交易中运行它们?理解在这里行不通,因为我只知道运行时程序列表的确切组成。基本上,我想我需要将它们折叠在一起。
我想这个问题通常适用于Cats中的Free Monad,因此我也将Cats标记为。谢谢。
答案 0 :(得分:5)
您可以使用猫中的.sequence
来做到这一点:
import doobie.implicits._
import cats.implicits._
...
val res = progList.sequence // ConnectionIO[List[Unit]]