This tiny version of Toytown is merely an attempt to see how small a working Lisp interpreter can be made and likely won't be enhanced (only shrunk further)
However, the following list of known issues is relevant to the initial baseline code, which is being developed in the separate toytown-lispy-java project.
- The dot (.) special form, borrowed from Clojure, is massively incomplete, and only resolves methods exactly matching the actual type of the arguments. Little effort is currently made to resolve methods with arguments which are type-compatible.
- Error reporting -- while vastly better than Norvig's cut-down Python interpreter -- leaves a lot to be desired, especially in reporting locations of errors.
- Java interop needs finishing off. Literals, property accesses, instance construction, etc, all need to work.
- It's slow! Profiling needs to be done; missing language features need to be added; misimplemented features need to be rewritten.
- The list of builtins is very short, and needs padding out to be really useful
- List implementation should use something more conventional, so that performance characteristics of code can be better quantified
- Missing types: no integers, strings complex numbers, bignums
- Missing syntax: needs relational operators, cond, etc
- Could borrow more features from Clojure, e.g. literal list and map syntax...
- Needs to handle tail recursion elimination
- Needs to handle call/cc
- Needs hygienic macros
- Compilation of procedures to bytecode would be desirable, for performance reasons