python-plus-plus/TODO.md

25 lines
1.1 KiB
Markdown
Raw Permalink Normal View History

2024-11-21 10:13:12 +11:00
# 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
2024-11-21 10:33:34 +11:00
- [x] Tuple element syntax `a.0, a.1`, instead of allowing arbitrary indices into the tuple. This will allow for easier typechecking for tuples
2024-11-21 11:00:49 +11:00
- [ ] Proper error reporting with locations
2024-11-21 10:13:12 +11:00
- [ ] 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