Synsema docsENES

Contra tus instintos

Ningún LLM fue entrenado en Synsema, así que un modelo que escribe Synsema recae en hábitos

de otros lenguajes. Estas son las diferencias que muerden. **Cada afirmación acá está

verificada contra el engine** (las de abajo son un doctest que pasa):

priors.syn
-- Doc example: places where Synsema differs from what a fresh LLM assumes.
-- Every claim below is a passing assertion against the engine (doctested).
intent: "doc example: counter-your-priors gotchas"
require secret("API_KEY")

print("1 / 2 = " + text(1 / 2) + "   (division is always float)")

test "division is ALWAYS float (1/2 is 0.5, not 0)"
    assert_eq(1 / 2, 0.5)
    assert_eq(type_of(1 / 2), "number")

test "there is no has(); use contains() for map keys"
    let m be {"a": 1, "b": 2}
    assert(contains(m, "a"))
    assert(not contains(m, "z"))

test "concatenating text + secret redacts the WHOLE string (prefix absorbed)"
    let k be secret("API_KEY", "sk-real-123")
    assert_eq(type_of("Bearer " + k), "secret")
    assert_eq(text("Bearer " + k), "secret(API_KEY)")

test "property access uses `of` (or dot)"
    let cfg be {"host": "localhost", "port": 8080}
    assert_eq(host of cfg, "localhost")

Más gotchas (verificados)

la forma de función parsea con check pero revienta en runtime (Undefined variable: log).

auto-otorga (random es para tokens/nonces, así que es deny-by-default).

resultados (pasá un 5º argumento para subir el límite).

analyze X for "...", generate "..." given X. El reason "literal" pelado recién es

válido tras un fix reciente.

detectar el sufijo, leé path of request — el param ya viene sin él.

GET /:lang/:version, un static "/assets" nunca se alcanza — serví los assets con una

ruta declarada GET /assets/*path.

serve, print/log llegan a la terminal con prefijo [serve].

(../x.syn se deniega).

Si un modelo insiste en generar mal alguno de estos, copiá esta página a su contexto — es exactamente el instinto que hay que corregir.