Skip to content

Source status: no status is stated in the source document, so none is assigned here. Do not treat this page as a finalized specification. The normative rules are in the Technical Specification.

Type System

The language will use a strict, statically checked type system.

1. Primitive Types

  • Integer
  • Decimal
  • Boolean
  • String
  • Character
  • Unit (no meaningful return value)

2. Structured Types

  • Object
  • Struct
  • Enum
  • Collection
  • Tuple

3. Safety Types

  • Optional: A value that may be absent.
  • Result: A value that represents success or failure.
  • NonNull: A value that cannot be null.
  • Bounded: A numeric value constrained by declared limits.
  • Validated: A value that has passed specified validation rules.

4. Type Rules

  • No implicit type conversions.
  • No silently discarded return values.
  • No unchecked access to potentially absent values.
  • Function arguments and return values must match declared types.
  • Collections must declare the types of their contents.
  • Constraints must be checked statically when possible, otherwise at runtime.

Design Goal

Types should describe not only what kind of data a value contains, but also what can safely be assumed about that value.


Source and authority

This page migrates TYPES.md in full. It is an explanatory / implementation document, not the normative specification. Where it simplifies a rule, the Technical Specification governs. The original file is preserved in source-original/LANG/.