this is done to avoid repeating all the arity checks all over the place. That was getting a little tedious.
previously it was impossible to do the following: (define dave (quote (x y z))) dave the interpreter would incorrectly try to evaluate the (x y z), because there was no quote level being recorded, and it was seen as being the same as a regular sexp.
added subtraction and multiplication
can also lex integers and floats now