Adder: To-Do List
- Compiler performance is poor.
- This has been ameliorated by caching the generated Python code for
modules, the way CPython caches .pyc files.
- When an exception is thrown while compiling a module, delete the
cache file.
- Regression tests to test the things that are too hard to test in
unit tests.
- TCO
- See thread
at Hacker News.
- Web framework
- In progress. See .../adder/samples/web/. Problem: the Web server
needs write access to .../adder/modules, and to the .py files
therein, so that it can compile modules.
- Cache the prelude
- Already done in modules (it gets included statically), but not in
scripts.
- Logic programming
- It would be very cool to give Adder a logic
programming system. Initially a simple one, as described in the
early chapters of The Art of Prolog, but it'd be nice to
extend it to use a SQL backend. The system should include the
ability to trigger arbitrary Adder code.
- Return and yield in helper functions. Probably solved.
- There are a few places where we use a helper function to solve the
statement problem. E.g.,
(:=)
and
(if)
. We need to worry about return
and yield—can't translate them directly, or we'll be returning
from the helper.
Currently working on this; tackling it by replacing with (return-from)
and (yield-from). Problem: these work fine for (defun); for
(lambda), there's no name. Add a :block arg to (lambda). Also to
(begin).
- Refactor
adder.pyle.build
and
adder.util.build
- Too many special cases; need to move that knowledge into the
function classes. Ideally, this would make it easier for the
function classes to do rewriting—it's absurd that they have to
call each other instead of calling
build
with the lists
they want.
- Make
(-gomer-try)
work as an expr.
- Depends on solving the statement problem, above. Probably solved.
- Error reporting
- Lots and lots of places where constraints are asserted. Should
all be replaced with proper error reporting.