(define unparse (lambda (exp) (cond ((lit? exp) (lit-datum exp)) ((varref? exp) (varref-var exp)) ((function? exp) (list 'lambda (list (function-formal exp)) (unparse (function-body exp)))) ((app? exp) (list (unparse (app-rator exp)) (unparse (app-rand exp)))) (else (error 'unparse ": Invalid abstract syntax" exp )))))