diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-07-12 17:55:27 -0300 |
|---|---|---|
| committer | Marcos Magueta <maguetamarcos@gmail.com> | 2026-07-12 17:56:11 -0300 |
| commit | b4a2485afbf74e99e2147086fbca0568b7e2b7b8 (patch) | |
| tree | f2f0f653c7de2d5a1b1565d0ec48c46dec580a5a /docs/language-specification.org | |
| parent | b7ab0a9d1f0275db32a526faf7cffe9d520b15c8 (diff) | |
| download | SOL-b4a2485afbf74e99e2147086fbca0568b7e2b7b8.tar.gz SOL-b4a2485afbf74e99e2147086fbca0568b7e2b7b8.zip | |
relation references as a term kind, written #Name
Diffstat (limited to 'docs/language-specification.org')
| -rw-r--r-- | docs/language-specification.org | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/docs/language-specification.org b/docs/language-specification.org index 639e8d6..602d3d4 100644 --- a/docs/language-specification.org +++ b/docs/language-specification.org @@ -60,6 +60,7 @@ The core lexical categories are: - literals (ground scalars) - records (tuple literals) - sequences (list literals) +- references (relation-denoting values, =#Name=) - blocks (membership propositions) - logical combinator messages as labels @@ -227,6 +228,31 @@ sequence of propositions (e.g. a schema's fact list) also uses =#( ... )=: it is honestly a sequence whose elements happen to be blocks. +** References + +A reference is a first-class value denoting a relation by name, +written with the Smalltalk symbol notation: + +#+BEGIN_SRC sol +#Person +#Increment +#+END_SRC + +A reference is a term, not a proposition: it names a relation as +data, resolved through the catalog of a state. It is deliberately +distinct from a string (a string is inert; a reference resolves) and +from a variable (an uppercase bare name in term position stays a +variable). Wherever a relation must appear as an argument, the +reference is the value: transition relations +(=[Insert relation: #Person ...]=), higher-order relations +(=[Map relation: #Increment ...]=), and the attributes of the +catalog relations themselves. + +Because a reference variable ranges over the catalog, which is +finite, an unbound reference is boundedly enumerable: the +higher-order restriction becomes ordinary cardinality analysis +rather than a prohibition. + ** Blocks Blocks — square brackets — delimit exactly one thing: membership |
