ludus/TODO.xit

56 lines
1.7 KiB
Plaintext
Raw Normal View History

2023-05-26 19:21:55 +00:00
[x] Fix recursive definition problems in grammar.clj
2023-06-02 22:03:40 +00:00
TODOS for parser
[ ] Make parser errors pretty
[ ] Use synchronization to make parsing more robust
[ ] Decide on synchronization tokens: [then else ] ) } , ; \n]
2023-05-26 19:21:55 +00:00
TODOS from interpreter
2023-05-31 15:51:43 +00:00
[x] implement tuple splat patterns
[x] update match-list to use new AST representation
[x] fix length comparison when pattern includes splats
[x] update match-dict to use new AST representation
[x] update match-struct to use new AST representation
2023-05-26 19:21:55 +00:00
[ ] update interpret-receive to use new AST representation
[ ] Check interpret-fn-inner ctx for cycles/bugs
2023-05-26 19:21:55 +00:00
Re-add processes to the language
[ ] Write send as function
[ ] update interpret-spawn to use new AST representation
[ ] ---- Investigate weird timing issue in current send implementation
[ ] Investigate `with-bindings` and virtual threads
2023-05-26 19:21:55 +00:00
Finish interpreter
2023-06-02 23:29:04 +00:00
[x] Wire up new interpreter to repl, script situation
[x] Merge new interpreter
2023-07-04 16:38:31 +00:00
Conditionals
[ ] Fix let bindings/scope in `if` expressions
[ ] Make `and` and `or` special forms
[ ] ---- `if and (let x ...)` pattern
[ ] ---- arguments are lazily, not eagerly, executed
2023-05-26 19:21:55 +00:00
Write a compiler: desugaring
[~] `...` to `..._` in tuple & list patterns
2023-05-26 19:21:55 +00:00
[ ] placeholder partial application to anonymous lambda
[ ] word -> :[word] word in pairs (patterns & expressions)
Write a compiler: correctness
[ ] check for unbound names
[ ] check for re-binding names
[ ] check that recur is in tail position
[ ] check that recur is only called inside loop or fn forms
[ ] check ns accesses
[ ] prevent import cycles
[ ] splattern is last member in a pattern
[ ] -----List/Tuple
[ ] -----Dict/Struct/Set
2023-05-26 19:21:55 +00:00
Write a compiler: optimization
[ ] devise tail call optimization
Next steps
[ ] Get drawing working?
[ ] Add stack traces for panics