# TODO - [x] Remove Dictionaries - [x] Make imports expect just a string, rather than an entire expression - [x] Remove Union types - [x] Fix token locations - [x] Make Return just a regular statement - [x] `StructType.{args=...}` syntax - [x] `[:ElementType, elements...]` syntax - [x] Tuple element syntax `a.0, a.1`, instead of allowing arbitrary indices into the tuple. This will allow for easier typechecking for tuples - [ ] Proper error reporting with locations - [ ] Make Typechecking a step before anything is interpreted - [ ] Implicit `[elements...]`/`.{args=...}`/`.Member(values...)` syntax - [ ] Destructring of tuples and structs - `(a, b) = some_tuple;` - `.{age=a, name=b} = some_struct;` - [ ] `let` keyword to do runtime destructuring for tuples, structs, lists - `assert let (0, value) = some_tuple;` - `assert let .{a=0, b=age} = some_struct;` - `if let .Some(value) = result { ... }` - `case [first, second | rest] { ... }` - Here `let` is not used, but it does the same thing as `if let`, just in a match context - [ ] Compile the program to bytecode and interpret the bytecode instead - [ ] Compile the bytecode to assembly