Oℕ
Size: a a a
Oℕ
rs
rs
w
λ
rs
rs
ΛВ
ИО
rs
rs
rs
Oℕ
F HasContext ThingsYouNeedHere
Or F WithContext Thing
and F WithContext AnotherThing
if you need several parts.@ClassyOptics
annotation that helps to extract only needed part of your context.trait Service[F[_]]
you can derive Embed[Service]
and have implicit Service[F]
automatically whenever you have F HasContext Service[F]
ZIO[R
,..] , Env[R
, ...] , ReaderT[F, R
, ...], ContextT[F, R
,...] where R - is a large case class with lot of nested case classes with all the components.Unlift[F, G]
machinery.F[A] = ZIO[Foo with Bar, E, A]
and G[A] = ZIO[Foo with Bar with Baz, E, A]
, Unlift[F, G]
which automatically gives you F ~> G
and G[G ~> F]
First one is just widening, second one can help to memoize portion of context, to reuse it in places, when you are not allowed to read it.rs
rs
ИО
F HasContext ThingsYouNeedHere
Or F WithContext Thing
and F WithContext AnotherThing
if you need several parts.@ClassyOptics
annotation that helps to extract only needed part of your context.trait Service[F[_]]
you can derive Embed[Service]
and have implicit Service[F]
automatically whenever you have F HasContext Service[F]
ZIO[R
,..] , Env[R
, ...] , ReaderT[F, R
, ...], ContextT[F, R
,...] where R - is a large case class with lot of nested case classes with all the components.Unlift[F, G]
machinery.F[A] = ZIO[Foo with Bar, E, A]
and G[A] = ZIO[Foo with Bar with Baz, E, A]
, Unlift[F, G]
which automatically gives you F ~> G
and G[G ~> F]
First one is just widening, second one can help to memoize portion of context, to reuse it in places, when you are not allowed to read it.Oℕ
rs
rs
rs