;;; proc.ss (load "/u/c311/ss/let.ss") (define ; EOPL Figure 5.4.1 (class () (base ) (base-inst-vars test-clauses) (base-methods (base-parse parse)) (base-init) (inst-vars (define (class (formals body env) (base ) (inst-vars formals body env) (methods (define apply (method (args) (eval body ( env formals args))))))) (define (class (formals body) (base ) (base-methods unparse) (inst-vars formals body) (methods (define eval (method (env) ( formals body env))) (define unparse (method () (list 'proc formals (unparse body))))))) (set! test-clauses (append '((((proc (x) x) 3) 3) (((proc (x y) (+ x y)) 1 2) 3) ((((proc (x) (proc (y) (+ x y))) 3) 4) 7)) test-clauses))) (methods (define name (method () 'proc)) (define parse (method (datum) (form-case datum (proc (formals body) ( formals (parse this body))) (else (base-parse this datum))))))))