- [ ] Everything-is-an-expression - [ ] ASCII strings - [ ] {`Int`,`UInt`}{`8`,`16`,`32`,`64`} - [ ] `Float`{`32`,`64`} - [ ] Structs (nominal products) - [ ] Enums (nominal sums) with simple `switch` - [ ] `Never` (uninhabited type) - [ ] Arrays - [ ] Shared mutable references - [ ] Type aliases - [ ] Irrefutable destructuring - [ ] "Method syntax" ----- - [ ] `inout` parameters - [ ] Pattern matching - [ ] Tuples (structural products) - [ ] Structural sums - [ ] Unicode strings - [ ] Generic functions (top level, first order, "prenex") - [ ] Generic types (first order) - [ ] "Type classes" / interfaces - [ ] Recursive types - [ ] Iterators, `foreach` - [ ] Ranges - [ ] Self-modifying functions (`function!()`) - [ ] A module system for namespacing - [ ] "Syntactic" operator overloading ---- - [ ] Unbounded `Int`, `UInt`, `Float` - [ ] Complex numbers - [ ] "Associated types" - [ ] "Object types" (like trait objects) - [ ] Existential types - [ ] Polymorphic recursion - [ ] Generic functions (higher-order, "higher rank") - [ ] Generic types (higher-order, "higher kinded") - [ ] A kind system - [ ] Variadic types (`[type]` kind) - [ ] Generic modules - [ ] Privacy - [ ] Effect tracking - [ ] `unsafe` / `trusted` - [ ] Threads - [ ] Dynamic typing, reflection
Int,UInt}{8,16,32,64}Float{32,64}switchNever(uninhabited type)inoutparametersforeachfunction!())Int,UInt,Float[type]kind)unsafe/trusted