EffectTalk

The Requirements Channel: Dependency Injection

The third channel R represents requirements - services your Effect needs to run.

Instead of importing services directly, Effects declare what they need. This makes code testable and composable.

Create an Effect that needs a Database service.

  • Use Effect.Service to define services
  • Access services with yield* ServiceName in Effect.gen
  • The R channel documents all required services
Loading code editor...