Saltar al contenido principal

Primitivas de nivel superior frente a anidadas

Toda primitiva de AXON 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
flowv0.1.0
anchor— (referenciado por run … constrained_by [...])v0.1.0
tool— (referenciada implícitamente por la superficie de tools)v0.1.0
intentv0.1.0
memoryv0.1.0
agentv0.1.0
stepflowv0.1.0
reasonflow (hermano de step) — también cuerpo de stepv0.1.0
probeflow, cuerpo de stepv0.1.0
validateflowv0.1.0
refineflowv0.1.0
weaveflowv0.1.0
useflow, cabecera de stepv0.1.0

E/S cognitiva

SurfaceTop-levelLives insideSince
resourcev1.2.0
fabricv1.2.0
manifestv1.2.0
observev1.2.0
reconcilev1.2.0
leasev1.2.0
ensemblev1.2.0
session— (referenciada por socket protocol:)v2.3.0

Plano de datos

SurfaceTop-levelLives insideSince
axonstorev1.31.0
dataspacev1.31.0
corpusv1.31.0
pixv1.14.0
ledgerv2.12.0
typev0.1.0

Tipos de sesión y transporte

SurfaceTop-levelLives insideSince
sessionv2.3.0
socketv2.3.0
axonendpointv1.23.0
axpointv1.23.0
daemonv1.11.0
mcpv1.24.0+
listenflow, cuerpo de daemonv1.11.0
channelv1.6.0
emitflow, cuerpo de daemonv1.6.0
publishflow, cuerpo de daemonv1.6.0
discoverflow, 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
shieldv1.13.1
mandatev1.13.1
computev1.12.0
lambdav1.10.0
forgeflowv1.12.0
otsv1.4.0
psychev1.5.2
agentv1.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.