Skip to main content

Core Types and Collections

Duckstruct is dynamically typed at the surface, but the compiler tracks precise information about values and shapes as it typechecks your program.

Primitive-ish values

  • Numbers
  • Strings
  • Booleans

Objects

Objects are written with { key: value, ... } syntax. Field access uses ..

let point = { x: 3, y: 4 }
point.x

Arrays

Array literals use [ ... ].

let xs = [1, 2, 3]

Functions

Functions are first-class values. See Functions and Traits.

Literal types

Duckstruct tracks many literals as specific values during typechecking (not just "string" vs "number"). This enables stronger checking and more precise inference in some cases.

Notes

This section is intentionally high-level. As the language evolves, prefer the compiler's diagnostics as the source of truth for what is accepted.