Error and Warning Catalog

Stable diagnostics are indexed by phase and code so callers can distinguish reader, normalization, runtime, warning, and resource outcomes.

How to reason about it

  • E300–E340 cover unbound names, application, arity, assignment, pair/range/type/numeric faults, value contexts, letrec, user errors, exception flow, and stale escapes.
  • E1xx belongs to reader/static normalization; W2xx/W3xx belongs to ordered warnings.
  • ResourceLimit is deliberately outside catchable E3xx and is reported as its own outcome.

Stable runtime codes

CodeConditionPhase / catchability
E300 / E303unbound read / set! of unbound nameruntime / catchable
E301 / E302non-procedure application / arity mismatchruntime / catchable
E310 / E311 / E312pair-list domain / range-index / primitive typeruntime / catchable
E313 / E314division by zero / non-finite productionruntime / catchable
E320 / E321value-count misuse / uninitialized letrec readruntime / catchable
E330 / E331 / E332user error / uncaught raise / non-continuable handler returnruntime / signal-specific
E340escape continuation no longer activeruntime / catchable fault after consumption
W330deprecated % call; prefer moduloruntime warning / once per source call site
W331deprecated list-first or list-rest call; prefer first or restruntime warning / once per source call site
ResourceLimitdeclared recursion/resource ceilingresource / not catchable as E3xx

A common mistake

Codes are stable contracts only where the runtime SSOT pins them.

Keep going

Use this page while writing code. For a guided explanation, return to the syntax map or the corresponding manual.

Syntax at a Glance · Learning Path