Recetario
Patrones copy-paste. Cada uno es completo y está doctested en su página — empezá acá, después seguí el link.
Validar entrada, conservar resultados parciales
Validá un payload a un valor tipado; sumá los válidos y saltá los malos con try/recover:
-- Doc cookbook: validate a payload into a typed value, and sum valid ones with
-- partial results (try/recover skips the bad ones). A copy-paste-ready pattern.
intent: "doc cookbook: validate + partial results"
type Order
id: number
total: number
task validate_order(payload)
when not contains(payload, "total")
raise("missing total")
when (payload["total"]) < 0
raise("total must be >= 0")
give Order(payload["id"], payload["total"])
task bad_order()
give validate_order({"id": 2, "total": 0 - 5})
task safe_total(payloads)
let total be 0
each p in payloads
try
let o be validate_order(p)
set total to total + (total of o)
recover err
log "skipped: " + err -- partial results: skip the invalid ones
give total
print("safe_total of mixed orders → " + text(safe_total([{"id": 1, "total": 10}, {"id": 2, "total": 0 - 1}, {"id": 3, "total": 5}])))
test "validate accepts good input and rejects bad"
assert_eq(total of validate_order({"id": 1, "total": 100}), 100)
assert_error(bad_order)
test "partial results: invalid orders are skipped"
assert_eq(safe_total([{"id": 1, "total": 10}, {"id": 2, "total": 0 - 1}, {"id": 3, "total": 5}]), 15)
Los otros patrones (cada uno mostrado completo en su página)
- API HTTP con auth + validación —
auth with,expect body {…}, los response helpers → Servidor HTTP. - CRUD sobre SQL —
db_open/sql_exec/sql(SQLite in-memory en el doctest) → SQL, Mongo y Redis. - Una operación LLM —
generate "…" given X, ramificar conllm_available()→ Primitivas LLM. - Un agente con tools — el loop allow-list
llm_step+call_tool→ Tool calling. - Un secret en cualquier header —
{"x-api-key": secret("KEY")}/bearer(...), materializado solo en el socket → Secretos. - Leer/escribir un archivo con capacidades —
require file(...)+read_file/write_file→ Archivos e I/O.
Cada snippet de esas páginas está doctested contra esta versión, así que un LLM puede copiar uno y funciona.