(list 'lambda (lambda-args prog) (normalize (caddr prog)))))
((app? prog)
(if (null? (cddr prog))
- (cons (normalize (car prog)) (normalize (cdr prog))) ; (f a)
- (list (list (normalize (car prog)) (normalize (cadr prog))) (normalize (caddr prog))))) ; (f a b)
+ `(,(normalize (car prog)) ,(normalize (cadr prog))) ; (f a)
+ `(,(list (normalize (car prog)) (normalize (cadr prog)))
+ ,(normalize (caddr prog))))) ; (f a b)
+ ;; (list (list (normalize (car prog))
+ ;; (normalize (cadr prog))) (normalize (caddr prog))))) ; (f a b)
((let? prog)
(append (list 'let
- (map (lambda (x) (cons (car x) (normalize (cdr x))))
+ (map (lambda (x) `(,(car x) ,(normalize (cadr x))))
(let-bindings prog)))
(map normalize (let-body prog))))
(else prog)))