Spore is a compiled, general-purpose programming language where intent is a first-class citizen.
A function signature is a complete specification: input/output types, error sets, cost budget, and required effects. All downstream analysis flows from the signature. The body can be empty — the intent is already fully expressed.
A program with holes compiles successfully. It is partial, not broken. Holes are the primary mechanism for structured collaboration between humans, Agents, and teams. The compiler provides a self-contained HoleReport for each hole so that any reader — human or machine — can propose a fill without additional context.
The recommended workflow is top-down: define signatures and types, verify the skeleton with the compiler, then fill holes iteratively in dependency order. Design-critical decisions must be reviewed explicitly before implementation proceeds.
Every compiler output — diagnostics, hole reports, incremental events, dependency graphs — is available in both human-readable and machine-readable form. Humans see clear error messages with repair hints; Agents see structured JSON suitable for automated reasoning.
Every side effect must be covered by declared effects. Every computational cost can be bounded and verified at compile time. A function's impact is fully assessable from its signature alone.
Modules are identified by content hashes (signature hash for interface compatibility, implementation hash for caching). No semver, no diamond dependency conflicts.
| Language | Idea adopted |
|---|---|
| Agda | Holes as first-class typed placeholders |
| Idris | Elaboration — the compiler fills in details the programmer omits |
| Unison | Content-addressed code — modules identified by hash, not name+version |
| Elm | Human-friendly error messages as a primary design goal |
| Roc | Managed effects — all IO through platform-provided effect handlers |
- Does this make user intent clearer or more obscure?
- Does this reduce ambiguity for Agents?
- Can the key semantics be exported in a stable, machine-readable form?
- Does it improve or degrade diagnostics and repair workflows?
- Does it preserve conceptual coherence with the rest of Spore?