zio/zio-macros

A macro for local elimination (ZIO[A with B with C, ...] => C => ZIO[A with B])

Closed this issue · 2 comments

Please write it :-)

To clarify, I'd love if the verbosity of the following could be reduced:

val mysqlXA: Transactor
val io: ZIO[Clock with Blocking with Transactor, Throwable, Unit]
val io2: ZIO[Clock with Blocking, Throwable, Unit] = 
  io.provideSome { r0: Clock with Blocking =>
    new Clock with Blocking with TransactorModule {
      override val blocking: Blocking.Service[Any] = r0.blocking
      override val clock: Clock.Service[Any] = r0.clock
      override val xa: transactor.Transactor[Task] = mysqlXA
    }
  }

Doesn't Mix already give you what you need here.