Add spaces around branches of the big if in eval for readability
Use a bind for the Result<T, ~str> monad to clean up car/cdr evals
add fmap2 and use it eq and cons implementations