From e3e6c6a411f0e151d841fd3c2eebe309ed255738 Mon Sep 17 00:00:00 2001 From: germax26 Date: Thu, 21 Nov 2024 10:13:12 +1100 Subject: [PATCH] Add TODO.md --- TODO.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..b9908f7 --- /dev/null +++ b/TODO.md @@ -0,0 +1,23 @@ +# 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 +- [ ] Tuple element syntax `a.0, a.1`, instead of allowing arbitrary indices into the tuple. This will allow for easier typechecking for tuples +- [ ] 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