cfunction
(compile ast &opt env source)
Compiles an Abstract Syntax Tree (ast) into a function. Pair the
compile function with parsing functionality to implement eval.
Returns a new function and does not modify ast. Returns an error
struct with keys :line, :column, and :error if compilation fails.