Language
Values & Types
Augur is vibe-typed — there are no type declarations, and any value can flow anywhere.
| Type | Literal | Notes |
|---|---|---|
| number | 42, 3.14 | IEEE-754 doubles. |
| text | "hello" | Escapes: \n \t \r \" \\. |
| yes / no | yes, no | The boolean type. |
| list | [1, 2, 3] | Heterogeneous, zero-indexed. |
| map | {name: "Ana", age: 30} | Keys are identifiers or strings. |
| naught | naught | The absence of a value (null). |
| oracle | (not writable) | The poison value — see below. |
| ritual | (via ritual) | First-class function value. |
Indexing reads from lists (by number) and maps (by text); out-of-range or missing keys yield naught:
summon xs = [10, 20, 30]
proclaim xs[1] // 20
summon m = {city: "Rio"}
proclaim m["city"] // Rio
proclaim m["nope"] // naught
The oracle poison value
When the oracle refuses an operation (it disagrees, returns malformed output, errors, or hits a type mismatch), the result is a special oracle value. It behaves like a poison null: any operation that touches it returns the oracle value unchanged, so a refusal propagates outward until something handles it. Booleanly it is false; iterating or calling it is a no-op (with a whisper to stderr). Catch it with attempt/rescue.
| Refusal cause | Meaning |
|---|---|
RECUSATIO | The oracle declined the operation. |
LECTIO_FALLAX | The oracle's response could not be read. |
ERROR_ORACULI | The provider call itself errored. |
GENUS_DISCORS | Type mismatch in a native operation. |