# skuld v0.33.0 - Table of Contents

> Core effect system for Elixir: write business logic as pure effect descriptions, swap handlers for testing. Provides the Comp engine and foundational effects (State, Reader, Writer, Throw, Yield).

## Pages

- Introduction
  - [Skuld](readme.md)
  - [Why Effects?](why.md)
  - [How Effects Work](what.md)
  - [Getting Started](getting-started.md)
  - [Syntax In Depth](syntax.md)
  - [Quick Reference](quick-reference.md)
  - [Performance](performance.md)
  - [Package Architecture](architecture.md)

- Foundational Effects
  - [State, Reader &amp; Writer](state-reader-writer.md)
  - [Throw &amp; Bracket](throw-bracket.md)
  - [Fresh &amp; Random](fresh-random.md)
  - [FxList](fxlist.md)
  - [Yield](yield.md)
  - [Command &amp; Transaction](command-transaction.md)

- Recipes
  - [Hexagonal Architecture](hexagonal-architecture.md)
  - [Property-Based Testing](property-testing.md)
  - [Handler Stacks](handler-stacks.md)
  - [PageMachine](liveview.md)
  - [Durable Computation](durable-computation.md)
  - [Batch Loading](batch-loading.md)

- Under the Hood
  - [How It Works](internals.md)
  - [Reference](reference.md)

## Modules

- [Skuld.Comp.ITotalLinearHandler](Skuld.Comp.ITotalLinearHandler.md): Behaviour for effect operation handlers that are provably total and linear.
- [Skuld.Comp.ScopeEnv](Skuld.Comp.ScopeEnv.md): Scope machinery carried through a computation.
- [Skuld.Effects.FreshInt](Skuld.Effects.FreshInt.md): FreshInt effect — generate monotonically increasing integers.
- [Skuld.Effects.State.Change](Skuld.Effects.State.Change.md): Represents a state change with old and new values.

- Core
  - [Skuld.Comp](Skuld.Comp.md): Core computation engine and foundational effects for the Skuld ecosystem.
  - [Skuld.Syntax](Skuld.Syntax.md): Syntax module providing the computation do-notation macro.

- Foundational Effects
  - [Skuld.Effects.Bracket](Skuld.Effects.Bracket.md): Bracket effect for safe resource acquisition and cleanup.
  - [Skuld.Effects.Command](Skuld.Effects.Command.md): Effect for dispatching commands through a unified pipeline.
  - [Skuld.Effects.Fresh](Skuld.Effects.Fresh.md): Fresh effect - generate fresh/unique UUIDs.
  - [Skuld.Effects.FxFasterList](Skuld.Effects.FxFasterList.md): FxFasterList - High-performance effectful list operations.
  - [Skuld.Effects.FxList](Skuld.Effects.FxList.md): FxList - Effectful list operations with full control effect support.
  - [Skuld.Effects.Random](Skuld.Effects.Random.md): Random effect - generate random values.
  - [Skuld.Effects.Reader](Skuld.Effects.Reader.md): Reader effect - access an immutable environment value.
  - [Skuld.Effects.State](Skuld.Effects.State.md): State effect - mutable state threaded through computation.
  - [Skuld.Effects.Throw](Skuld.Effects.Throw.md): Throw/Catch effects - error handling with scoped catching.
  - [Skuld.Effects.Transaction](Skuld.Effects.Transaction.md): Transaction effect — env state rollback with optional database transactions.
  - [Skuld.Effects.Writer](Skuld.Effects.Writer.md): Writer effect - accumulate a log during computation.
  - [Skuld.Effects.Yield](Skuld.Effects.Yield.md): Yield effect - coroutine-style suspension and resumption.

- Core Types
  - [Skuld.Comp.Cancelled](Skuld.Comp.Cancelled.md): Sentinel indicating a computation was cancelled.
  - [Skuld.Comp.Env](Skuld.Comp.Env.md): Environment construction and manipulation.
  - [Skuld.Comp.ExternalSuspend](Skuld.Comp.ExternalSuspend.md): External suspension for yielding to code outside Skuld's env threading.
  - [Skuld.Comp.ForeignSuspend](Skuld.Comp.ForeignSuspend.md): Suspension for external/foreign resources (e.g., JavaScript Promises).
  - [Skuld.Comp.Throw](Skuld.Comp.Throw.md): Error result that Catch recognizes
  - [Skuld.Comp.Types](Skuld.Comp.Types.md): Type definitions for Skuld.Comp.

- Protocols
  - [Skuld.Comp.IHandle](Skuld.Comp.IHandle.md): Behaviour for effect operation handlers.
  - [Skuld.Comp.IInstall](Skuld.Comp.IInstall.md): Behaviour for effects supporting handler installation via catch clauses.
  - [Skuld.Comp.IIntercept](Skuld.Comp.IIntercept.md): Behaviour for effects supporting local interception via catch clauses.
  - [Skuld.Comp.ISentinel](Skuld.Comp.ISentinel.md): Protocol for handling sentinel values in run/run! and generic sentinel inspection.
  - [Skuld.Comp.IThrowable](Skuld.Comp.IThrowable.md): Protocol for unwrapping exceptions in `Throw.try_catch/1`.

- Exceptions
  - [Skuld.Comp.InvalidComputation](Skuld.Comp.InvalidComputation.md): Raised when a non-computation value is used where a computation is expected.
  - [Skuld.Comp.MatchFailed](Skuld.Comp.MatchFailed.md): Represents a pattern match failure in a `comp` block.
  - [Skuld.Comp.ThrowError](Skuld.Comp.ThrowError.md): Exception raised when a Skuld computation throws via `Throw.throw/1`
and the error is not caught.
  - [Skuld.Comp.UncaughtExit](Skuld.Comp.UncaughtExit.md): Exception raised when an Elixir `exit` is not caught within a Skuld computation.
  - [Skuld.Comp.UncaughtThrow](Skuld.Comp.UncaughtThrow.md): Exception raised when an Elixir `throw` is not caught within a Skuld computation.

## Mix Tasks

- [mix skuld.docs.nav](Mix.Tasks.Skuld.Docs.Nav.md): Injects navigation headers and footers into documentation files.

