VS
Size: a a a
VS
VS
A
V
ὦ
R
R
VS
R
VS
ᛒ
R
V
ὦ
Oℕ
def makeFoo[I[_]: Monad, F[_]: Monad: Bar](implicit refs: MakeRef[I, F]) : I[Foo[F]]
def makeBar[I[_]: Monad, F[_]: Monad: Foo](implicit db: Database[I, F]): I[Bar[F]]
@ClassyOptics
case class Kektext[F[_]]{
foo: Foo[F],
bar: Bar[F],
)
type Kek[A] = ContextT[IO, Kektext, A]
// можно сгенерить автоматом магнолией
val makeKektext : IO[Kektext[Kek]] = for{
foo <- makeFoo[IO, Kek]
bar <- makeBar[IO, Kek]
} yield ContextT[IO, Kek]