Parse non-alphanumeric atoms.
Mark a spec as pending, because we don't parse programs.
Support evaluating atoms as well as lists.
Use recursion to evaluate atom arguments.
Remove duplication.
Fix adapter so list equality works.
Car of an empty list should raise exception (has no answer).
Cdr of empty list should raise exception (has no answer).
Implement cons on atoms.
Implement cons on lists.
Remove duplication in cons implementations.
Implement inspect on atom and list to simplify debugging.
Atoms should be built using a symbol and not a string.
Support evaluating cons.
Pass program into evaluate method.
Extract local variable to reduce duplication.
Retrieve an array of arguments rather than one argument.
Generalize for arbitrary number of arguments.
Evaluate all the arguments in one go.
Simplify de-structuring of program.