Constructs atom
Concepts and relations are co-equal first-class entities. The construct atom is layered:
- Language built-ins (lexer-level, always available):
structandenum— pure data declarations with no ontological commitment, no metatype classification, structural equality. - Stdlib ontological constructors (opt-in, not ambient — brought into scope via
use std::core::{type, rel}or a[package].preludeentry, RFD 0038): the generic metatypetypeintroduces ontologically-classified node-concepts (pub type Foo { … }); the generic metarelrelintroduces ontologically-classified relations (pub rel R(...)). They are the no-commitment baseline, imported like any vocabulary — nothing is ambient. - Vocabulary classifiers (require a
pub metatype/pub metareldeclaration in scope — declared in this package, or imported from an external vocabulary package): metatypes like UFO’skind,role,phase,categoryand metarels likemediation,materialfor richer ontological commitment. No vocabulary ships with the language or the stdlib — a vocabulary is an ordinary external package (e.g. a UFO package authored by the UFO authors), and an introducer that resolves to no visible declaration is refused withOE0605/OE0606.
All four layers compile to one substrate IR. The distinction lives in the metatype/metarel calculus (Meta-calculus atom); the language itself ships only the calculus, the data-declaration shorthands, and the meta-declaration keywords.