好像很简单
type Db[F[_], A] = Kleisli[F, Connection, A]
type Transactor[DB[_], F[_]] = DB ~> F
也可用于构建功能性 JDBC 层
最佳答案
总结来自@SystemFw 和@tpolecat 的回答 https://gitter.im/scala/scala?at=5cfe6505bf4cbd167c619960
免费 Monad 的优点:
F[_]
因此不能在事务边界内使用不正确的(异步)效果。这很重要,因为大多数 JDBC 驱动程序都设计了 java.sql.Connection
实现是单线程的。 免费 Monad 的缺点:
F[_]
所以你不能在事务中嵌套特定的效果。 Doobie 将来会有无标签版本。
关于scala - 为什么 Doobie 使用免费 monad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524454/