Augur docs

Language

Values & Types

Augur is vibe-typed — there are no type declarations, and any value can flow anywhere.

TypeLiteralNotes
number42, 3.14IEEE-754 doubles.
text"hello"Escapes: \n \t \r \" \\.
yes / noyes, noThe boolean type.
list[1, 2, 3]Heterogeneous, zero-indexed.
map{name: "Ana", age: 30}Keys are identifiers or strings.
naughtnaughtThe 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 causeMeaning
RECUSATIOThe oracle declined the operation.
LECTIO_FALLAXThe oracle's response could not be read.
ERROR_ORACULIThe provider call itself errored.
GENUS_DISCORSType mismatch in a native operation.