;;; let.ss (load "/u/c311/ss/env.ss") (define ; EOPL Figure 5.3.2 (class () (base ) (base-inst-vars test-clauses) (base-methods (base-parse parse)) (base-init) (inst-vars (define (class (formals exps body) (base ) (inst-vars formals exps body) (methods (define eval (method (env) (eval body ( env formals (eval exps env))))) (define unparse (method () (list 'let (map list formals (unparse exps)) (unparse body))))))) (set! test-clauses (append '(((let ((x 3) (y 4)) (+ x y)) 7)) test-clauses))) (methods (define name (method () 'let)) (define parse (method (datum) (form-case datum (let (decls body) ( (map car decls) ( (map (lambda (datum) (parse this datum)) (map cadr decls))) (parse this body))) (else (base-parse this datum))))))))