interpretation is ast transformation so all built-in functions now deal with ast nodes instead of ruby values