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...