Use dot to separate library name parts
Refactor import bindings
Stop using that silly array format
Fix the map function so it handles multiple list args
This work exposed a serious flaw in my approach to the compiler. Up
until now I could get away with fundamentals like `car`, `cdr`, etc.
being macros, compiled directly into vm instructions. But that's not
right; these can be passed around like lambdas in Scheme, so I need to
rethink my approach.
The dirty hack I used here is to wrap the macro in a lambda, but that is
SLOW! The test suite now takes nearly twice as long to run.
Fix bug defining bindings in a libary
Just add a library that will be helpful later
Eliminate some variables we aren't using
Extract file loading from Compiler
Some small fixes to loading/including libraries
Refactor for easier porting/debugging
* Remove code paths that allow parsing/compiling/executing *additional* code
subsequent to initializing the object.
* Remove caching of standard library in specs to feel the full pain of slow
* Move parsing of code responsibility back up to the Program object --
Compiler delegates back up to the parent Program if it needs to parse
new code. This separation of concerns could be further improved.
Show better error when calling something other than a lambda
Show better error when calling undefined
Add case insensitive char comparision functions
Rewrite list=? function to be a bit faster
We don't need to check the length on every recursion loop.
Improve lib spec failure message
Support all character names in the spec