Arrow Typed Errors
Quick start
- Distinguish expected domain failures from exceptional faults before selecting an API.
- For new code, prefer context-parameter computations (
context(_: Raise<E>)) and run them into a wrapper at a boundary witheither { ... },nullable { ... },option { ... }, orior(...) { ... }. - Use
Eitheroperators for routine propagation and transformation; do not pattern match only to reconstructLeftorRight. - Use
whenwhen the domain genuinely branches by case or when matching a multi-state wrapper directly communicates intent.
Workflow
- Model domain failures as focused sealed types.
- Choose fail-fast composition or independent validation accumulation.
- Implement internal logic in a
Raise<E>context and expose an appropriate wrapper at the public boundary. - Bind nested typed computations and translate their errors at the layer boundary.
- Convert only expected, recoverable exceptions into typed failures.
- Inspect the result with a combinator or intentional case analysis at the consumer boundary.
- Type-check examples when introducing a less familiar Arrow API or upgrading Arrow/Kotlin.
- When changing examples, update and run the bundled
scripts/verify-examples.ktcheck.
References
- Load references/typed-errors.md for context-parameter API examples, imports, validation, wrapper usage, and the checked sample location.
- Load references/best-practices.md when designing or reviewing code, especially to simplify verbose
Eitherhandling without turningwheninto a blanket prohibition.