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