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/.