LRL types --------- Bottom type - private Top type - any Unit type - () Product - (int, bool) Set - bitfield (x, y, z) -- only with a (small) constant number of elements Union - union (int, bool) Option - int? Equality - all types, except: - types with unknown storage (private, any, incomplete) - float types (which has nan values) - function types - unknown-length arrays Integer - int, etc. Float - float, etc. Character - byte (ASCII) or uint32 (Unicode) String - byte+> Reference - ^ Pointer - +>, *+>, *> Array - int#[2] Record - (int x, bool b) Boolean - bool Enumeration - enum (x, y) Function - (int)(int, int) Opaque - private (and incomplete types) Recursive - typedef A = (A^? a); Not implemented in LRL ---------------------- Bignum Complex Decimal Fixed-point Interval Rational Associative array Class Dependent type (except for arrays with lengths) Inductive List Object Collection Exception Semaphore (use phreads or whatever) Stream (use stdio or whatever) Type class Not needed in LRL --------------- void - any and () are related