Def shouldn't nest environments
Macros have many bodies. Funcs always have names.
puts should return nil
Define compile_macros in terms of macroexpand_1
Formatting and comments
Properly thread interpreter through funciton calls
Added let, let* and fixed recursive macroexpansion