Five choices shape the language
- Determinism is language identity. The same input always gives the same answer, and that is part of what Lispex is rather than a habit of one machine. Evaluation order, how values are printed, diagnostics, and declared resource outcomes all belong to the contract.
- Unsupported behavior fails loudly. When a feature is missing, the program that runs the rule does not go looking for names in the surrounding system and does not borrow a library from the platform.
- Data and effects stay separate. A rule returns a value. Files, network, time, randomness, and external actions belong to an explicit caller.
- Representations do not mint authority. Source, an exact image, a bundle, a receipt, and a report each answer different questions. None of them promotes itself into permission.
- Evidence names what it covers. A set of checked example cases or a comparison between backends supports only the programs, inputs, observations, and limits it records.
The trade-offs are intentional
| Lispex chooses | You gain | You give up |
|---|---|---|
| one pinned profile, a fixed set of meanings for the language | repeatable results and reviewable failures | unspecified host behavior |
| a compact value and procedure set | a language that can be mapped and tested | broad Scheme compatibility |
| explicit host boundaries | rules that remain portable and auditable | convenient implicit input, output, and host names |
| exact source identity | byte-for-byte review and transport | automatic whitespace or encoding normalization |
| receipts and Vouch evidence that stay inside stated limits | inspectable claims with clear failure points | a universal proof or transferable authorization |
A practical reading rule
When a feature sounds powerful, ask two questions about it. Which exact bytes does it describe, and which program ran them? And what still belongs to the calling application? Those questions explain why an image can prove exact recovery without proving where the source came from, 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 and Deferred Scope for the exact part of the language that is covered, or Roadmap for directions that remain subordinate to these choices.