© 2026 Hedgehog Software, LLC
class TooLongError extends Error { _tag = "TooLongError" message = "Too long" } class TooShortError extends Error { _tag = "TooShortError" message = "Too short" } const length = (input: string) => Effect.succeed(input.length) const program = (input: string) => Effect.gen(function*() { const l = yield* length(input) if (l < 3) yield* Effect.fail(new TooShortError()) if (l > 9) yield* Effect.fail(new TooLongError()) return "Just right" })
program
Effect<string, TooShortError | TooLongError>
Effect<string, TooShortError>
Effect<string, TooLongError>