Preludes
A prelude is a Forma source file that teaches the compiler new keywords. Each form descriptor names a keyword's slots, their types, the IR it produces, and optionally how it emits TypeScript. Swap the prelude and you have a different language on the same checked core.
Each reference page is generated from the prelude source when the site builds. Forms and slot types come from descriptors, function signatures from (: name type) declarations, and documentation from docstrings and the comments above each definition. Nothing is maintained separately, so a page cannot drift from its prelude.
What the statuses mean
Prototype and Spike preludes run in the TypeScript engine and generate Effect TypeScript. Stored output means the playground shows a reviewed golden instead of recomputing it. Conformance corpus preludes are loaded by the conformance fixtures and the example corpus. Protocol preludes describe hosted wire formats.
Domain languages
- email.lispPrototypeEmail automation rulesWho gets an email, when, and how fast. Closed lanes, one decision per contact, and typed delivery recovery.ruleReference →1 form · 3 types · 6 functions
- http-api.lispSpikeEffect HttpApiAPIs, groups, endpoints, and handlers that emit a typed Effect 4 HttpApi and builder.endpoint · group · api · handler · handleReference →5 forms · 5 types
- rpc.lispPrototypeEffect RPCUnary RPC contracts and named groups that emit native Effect 4 schemas and registrations.rpc · rpc-groupReference →2 forms · 2 types
- elm.lispPrototypeElm-style applicationsMessages, update, commands, and Hiccup views, checked against closed vocabularies and lowered to Foldkit.msg · command · update · view · appReference →5 forms · 8 types
- ontology.lispStored outputDomain ontologyEntities, relations, queries, documents, processes, and permissions, elaborated into canonical IR.entity · relation · seed · link · attribute · query · +48Reference →54 forms · 64 types · 35 functions
- ui.lispConformance corpusInterface componentsTyped projections for layouts, cards, tables, inputs, and charts, plus constant renderer configuration.text · rows · columns · card · item-group · item · +56Reference →62 forms · 2 types · 3 functions
- viewspec.lispConformance corpusOntology-aware viewsEntity browsers, pickers, query consoles, and action buttons for hosted ViewSpec UI.entity-browser · action-button · create-entity-button · entity-picker · query-console · view-refReference →6 forms · 16 functions
- system.lispConformance corpusPlatform self-descriptionThe platform described in its own ontology vocabulary: system entities and attributes.Reference →33 declarations
Core
- kernel.lispCoreKernel macrosThe control-flow and threading sugar every program uses, written as ordinary Forma macros.not · when · unless · cond · and · or · +2Reference →8 macros
- compiler.lispCoreDescriptor helpersShared reflection and diagnostics helpers for form projections.named-mapReference →1 macro · 3 functions
Host protocols
- ontology-ir.lispGeneratedOntology IR protocolThe canonical IR types of the ontology forms, derived from ontology.lisp.Reference →51 types · 2 functions
- query-protocol.lispProtocolQueryPlan protocolHosted QueryPlan descriptors.Reference →46 types · 1 function
- action-protocol.lispProtocolActionPlan protocolHosted ActionPlan descriptors.Reference →18 types · 1 function
- content-protocol.lispProtocolContent protocolHosted ContentProtocol descriptors.Reference →15 types · 1 function
- viewspec-protocol.lispProtocolViewSpec protocolHosted ViewSpec descriptors that are not component nodes.Reference →55 types · 39 functions
- canonical-runtime-protocol.lispProtocolCanonicalRuntime protocolHosted CanonicalRuntime descriptors.Reference →13 types · 1 function
Write your own
Start with Writing a form, then read the email prelude: one form, three types, and six functions make a complete rule language. Hosts and the language server accept their own prelude paths, and file modules can export compile-time form libraries.
The reference generator currently lives in this site's build and is not packaged for other projects. A consumer-prelude SDK is on the roadmap.