% (define x 52)
(List [(Id "define");(Id "x");(Num 52)])
% (define foo (lambda (x) (lambda (y) (+ x y))))
(List [(Id "define");(Id "foo");(List [(Id "lambda");(List [(Id "x")]);(List [(Id "lambda");(List [(Id "y")]);(List [(Id "+");(Id "x");(Id "y")])])])])
% ((foo 3) 4)
(List [(List [(Id "foo");(Num 3)]);(Num 4)])
% (define bar (lambda (y) (+ x y)))
(List [(Id "define");(Id "bar");(List [(Id "lambda");(List [(Id "y")]);(List [(Id "+");(Id "x");(Id "y")])])])
% (bar 2)
(List [(Id "bar");(Num 2)])
% (define x 7)
(List [(Id "define");(Id "x");(Num 7)])
% (bar 2)
(List [(Id "bar");(Num 2)])
% (cons 1 nil)
(List [(Id "cons");(Num 1);(Id "nil")])
% (cons 2 (cons 3 nil))
(List [(Id "cons");(Num 2);(List [(Id "cons");(Num 3);(Id "nil")])])
% (car (cons 4 (cons 5 nil)))
(List [(Id "car");(List [(Id "cons");(Num 4);(List [(Id "cons");(Num 5);(Id "nil")])])])
% (cdr (cons 6 (cons 7 nil)))
(List [(Id "cdr");(List [(Id "cons");(Num 6);(List [(Id "cons");(Num 7);(Id "nil")])])])
% (if #t 1 2)
(List [(Id "if");(Bool true);(Num 1);(Num 2)])
% (if #f 1 2)
(List [(Id "if");(Bool false);(Num 1);(Num 2)])
