% (boolean? #t) (List [(Id "boolean?");(Bool true)]) % (boolean? 3) (List [(Id "boolean?");(Num 3)]) % (define three 3) (List [(Id "define");(Id "three");(Num 3)]) % three (Id "three") % (+ three 4) (List [(Id "+");(Id "three");(Num 4)]) % (define add-two (lambda (n) (+ n 2))) (List [(Id "define");(Id "add-two");(List [(Id "lambda");(List [(Id "n")]);(List [(Id "+");(Id "n");(Num 2)])])]) % (add-two 5) (List [(Id "add-two");(Num 5)]) % (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) (List [(Id "define");(Id "fact");(List [(Id "lambda");(List [(Id "n")]);(List [(Id "if");(List [(Id "=");(Id "n");(Num 0)]);(Num 1);(List [(Id "*");(Id "n");(List [(Id "fact");(List [(Id "-");(Id "n");(Num 1)])])])])])]) % (fact 3) (List [(Id "fact");(Num 3)]) % (fact 5) (List [(Id "fact");(Num 5)])