Saltar al contenido principal

Primitivas de nivel superior frente a anidadas

Toda primitiva de axon-lang es o bien de nivel superior (se sostiene sola en la raíz del programa) o bien anidada (solo aparece dentro de otra construcción). El compilador lo impone en tiempo de parseo: una declaración step fuera de todo flow es un error de sintaxis; una declaración flow dentro de otro flow, también.

Esta página es la tabla autoritativa. Cuando un agente dude sobre dónde va una primitiva, debe consultar este recurso — toda decisión se sigue de una fila.

Cómo leer esta tabla​

  • Superficie — la palabra clave de AXON tal y como aparece en el código.
  • Nivel superior — ✓ si la palabra clave abre una declaración de nivel superior; ✗ si solo aparece anidada.
  • Vive dentro de — para las primitivas anidadas, la construcción o construcciones que pueden contenerla.
  • Categoría — la familia a la que pertenece la primitiva (alimenta la faceta axon.primitives(filter)).
  • Desde — el ciclo que la introdujo.

Cognición​

SuperficieNivel superiorVive dentro deDesde
persona✓— (referenciada por run … as y step … use)v0.1.0
context✓— (referenciado por run … within)v0.1.0
flow✓—v0.1.0
anchor✓— (referenciado por run … constrained_by [...])v0.1.0
tool✓— (referenciada implícitamente por la superficie de tools)v0.1.0
intent✓—v0.1.0
memory✓—v0.1.0
agent✓—v0.1.0
step✗flowv0.1.0
reason✗flow (hermano de step) — también cuerpo de stepv0.1.0
probe✗flow, cuerpo de stepv0.1.0
validate✗flowv0.1.0
refine✗flowv0.1.0
weave✗flowv0.1.0
use✗flow, cabecera de stepv0.1.0

E/S cognitiva​

SurfaceTop-levelLives insideSince
resource✓—v1.2.0
fabric✓—v1.2.0
manifest✓—v1.2.0
observe✓—v1.2.0
reconcile✓—v1.2.0
lease✓—v1.2.0
ensemble✓—v1.2.0
session✓— (referenciada por socket protocol:)v2.3.0

Plano de datos​

SurfaceTop-levelLives insideSince
axonstore✓—v1.31.0
dataspace✓—v1.31.0
corpus✓—v1.31.0
pix✓—v1.14.0
ledger✓—v2.12.0
type✓—v0.1.0

Tipos de sesión y transporte​

SurfaceTop-levelLives insideSince
session✓—v2.3.0
socket✓—v2.3.0
axonendpoint✓—v1.23.0
axpoint✓—v1.23.0
daemon✓—v1.11.0
mcp✓—v1.24.0+
listen✗flow, cuerpo de daemonv1.11.0
channel✓—v1.6.0
emit✗flow, cuerpo de daemonv1.6.0
publish✗flow, cuerpo de daemonv1.6.0
discover✗flow, cuerpo de daemonv1.6.0

La palabra taint está reservada en el lexer pero hoy no tiene producción en el parser (aparece en el retículo de incertidumbre epistémica de axon-frontend::epistemic, no como declaración de nivel superior). Si un ciclo futuro introduce una declaración taint <Name> { … }, el registro y esta tabla crecen a la vez.

Operadores​

SurfaceTop-levelLives insideSince
shield✓—v1.13.1
mandate✓—v1.13.1
compute✓—v1.12.0
lambda✓—v1.10.0
forge✗flowv1.12.0
ots✓—v1.4.0
psyche✓—v1.5.2
agent✓—v1.12.0

La palabra logic está reservada en el lexer pero —igual que taint (v1.2.0)— hoy no tiene producción en el parser. Si un ciclo futuro introduce una declaración logic <Name> { … }, el registro y esta tabla crecen a la vez.

Sentencias (no son primitivas, pero se parsean en el cuerpo de un flow)​

Son sentencias que un agente trata como el cuerpo de un flow. NUNCA van en el nivel superior.

SuperficieVive dentro deQué hace
if … elsecuerpo de flowRama condicional
for x in …cuerpo de flowIteración acotada
let x = …cuerpo de flowEnlace local
return …cuerpo de flowRetorno anticipado o explícito
breakdentro de forSalida anticipada del bucle
continuedentro de forSiguiente iteración
run …nivel superior — pero es un enlace, no una declaraciónEnlaza un flow con persona + context + anchors
applycampo del cuerpo de stepInvocar a otro flow

Disciplina de composición​

  • Los flows componen con apply, no anidándose. Una declaración flow no puede aparecer dentro de otro flow. Los subflows se referencian desde el cuerpo de un step con apply: <FlowName>.
  • Los anchors y los shields se enlazan por run, no por la cabecera del flow. Un flow no enumera sus restricciones; lo hace la sentencia run que lo ejecuta, mediante constrained_by [...].
  • Las personas, los contexts y los tools se referencian, no se vuelven a declarar. Un flow que usa una persona la referencia (as <Persona> en el run, o use <Persona> en cada step). No incrusta una declaración nueva.

Para el porqué de estas reglas, lee axon://logic/flow_composition.