http://schemers.org/Documents/Standards/R5RS/HTML/
Atom:
- create atom object
- add subtypes for string, number, etc.?
Cons:
- fix cons count for empty cons?
Builtins:
- consider if eq? and eqlist? should really be multis
- add varieties for mismatched parameters if not
- refactor is_deeply() and is() in Pheme::Test
- add diagnostics too, if possible
- add nil?
- fix car on empty cons
Special forms:
- cond
- lambda (be careful of define interaction though!)
- else
- and
- or
Compiler:
- extract and merge POST improvements with Punie
- publish them under compilers/
- share those nodes somehow
- port to new TGE, when the branch lands
- fix load_bytecode section in generated code
- refactor compiler backend object
- share with Perl 6 and Punie
- move somewhere in Parrot lib path
- allow dumping of trees and (runnable) PIR
- use precompiled tree grammars
- merge all PBC files into pheme.pbc
Fix namespace:
- lowercase
- directly under Parrot root
- use nested namespaces properly
Grammar:
- tighten identifiers
- allow ! $ % & * + - . / : < = > ? @ ^ _ ~
- start with any non-number-beginning character
- . + - not allowed at the start of an identifier
- + - themselves can be an identifier
- ... can be an identifier
- fix whitespace
- space, newline (also tab, carriage return)
- parse numbers
- . + - allowed at the start of a number
- add more rules
- \ is an escape character
Predicates:
- boolean?
- everything but #f is true (conditionals, not true here)
- symbol?
- char?
- vector?
- procedure?
- pair?
- number?
- string?
- port?
- predicates are disjoint
- empty list satisfies none