python-plus-plus/TODO.md

25 lines
1.1 KiB
Markdown

# 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