Constructors
Type constructors: Record, ListOf, Maybe, Either, Variant.
Either
Tagged union of two types. Accepts { _tag = "Left"; value = a; }
or { _tag = "Right"; value = b; }.
ListOf
Homogeneous list type. ListOf Type checks that all elements have the given type.
Custom verifier sends per-element typeCheck effects with indexed context
strings (e.g. List[Int][2]) for blame tracking. Unlike Sigma, elements
are independent — no short-circuit. All elements are checked; the handler
decides error policy (strict aborts on first, collecting gathers all).
Maybe
Option type. Maybe Type accepts null or a value of Type.
Record
Record type constructor. Takes a schema { field = Type; ... } and checks that a value has all required fields with correct types. Extra fields are permitted (open record semantics).
Variant
Discriminated union. Takes { tag = Type; ... } schema.
Accepts { _tag = "tag"; value = ...; } where value has the corresponding type.