Philosophy and Design Boundaries

Lispex stays small, deterministic, and inspectable: one semantic authority, explicit exclusions, and evidence that never claims more than it observed.

Five choices shape the language

  1. Determinism is language identity. Evaluation order, rendering, diagnostics, and declared resource outcomes are part of the contract rather than accidental properties of one machine.
  2. Unsupported behavior fails loudly. The evaluator does not search host globals or borrow a platform library when a feature is missing.
  3. Data and effects stay separate. A rule returns a value. Files, network, time, randomness, and external actions belong to an explicit caller.
  4. Representations do not mint authority. Source, an exact image, a bundle, a receipt, and a report each answer different questions; none promotes itself into permission.
  5. Evidence names its denominator. A checked corpus or backend comparison supports only the runners, inputs, observations, and limits it records.

The trade-offs are intentional

Lispex choosesYou gainYou give up
one pinned semantic profilerepeatable results and reviewable failuresunspecified host behavior
a compact value and procedure seta language that can be mapped and testedbroad Scheme compatibility
explicit host boundariesrules that remain portable and auditableconvenient implicit I/O and globals
exact source identitybyte-for-byte review and transportautomatic whitespace or encoding normalization
bounded receipts and Vouch evidenceinspectable claims with clear failure pointsa universal proof or transferable authorization

A practical reading rule

When a feature sounds powerful, ask two questions: “Which exact bytes and runner does it describe?” and “What still belongs to the calling application?” Those questions explain why an image can prove exact recovery without proving provenance, and why a Vouch gate can report one local matching decision without authorizing a payment or deployment.

Current boundary

Lispex is Lisp-shaped, but it is not an attempt to accept every Scheme program. Scope cuts are compatibility decisions. A future backend implements the profile; it does not redefine the language by accident.

Keep going

Use Current Scope for the exact included surface, or Roadmap for directions that remain subordinate to these choices.

Current Scope · Roadmap