Macro Evaluation is Different
for functions
- gets the function name
- evaluates all the args
- applies the function to the eval’ed args
for macros
- passes arguments without evaluating them
- the macro function returns another expression
- evaluator evaluates that expression instead of the original