56 lines
1.7 KiB
Plaintext
56 lines
1.7 KiB
Plaintext
|
|
[x] Fix recursive definition problems in grammar.clj
|
|
|
|
TODOS for parser
|
|
[ ] Make parser errors pretty
|
|
[ ] Use synchronization to make parsing more robust
|
|
[ ] Decide on synchronization tokens: [then else ] ) } , ; \n]
|
|
|
|
TODOS from interpreter
|
|
[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
|
|
[ ] update interpret-receive to use new AST representation
|
|
[ ] Check interpret-fn-inner ctx for cycles/bugs
|
|
|
|
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
|
|
|
|
Finish interpreter
|
|
[x] Wire up new interpreter to repl, script situation
|
|
[x] Merge new interpreter
|
|
|
|
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
|
|
|
|
Write a compiler: desugaring
|
|
[~] `...` to `..._` in tuple & list patterns
|
|
[ ] 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
|
|
|
|
Write a compiler: optimization
|
|
[ ] devise tail call optimization
|
|
|
|
Next steps
|
|
[ ] Get drawing working?
|
|
[ ] Add stack traces for panics
|