*** ch4-mceval.scm.orig 1996-09-05 03:17:21.000000000 +0900 --- ch4-mceval.scm 2005-01-24 07:09:49.000000000 +0900 *************** *** 16,22 **** ;;;SECTION 4.1.1 ! (define (eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-variable-value exp env)) ((quoted? exp) (text-of-quotation exp)) --- 16,22 ---- ;;;SECTION 4.1.1 ! (define (myeval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-variable-value exp env)) ((quoted? exp) (text-of-quotation exp)) *************** *** 29,42 **** env)) ((begin? exp) (eval-sequence (begin-actions exp) env)) ! ((cond? exp) (eval (cond->if exp) env)) ((application? exp) ! (apply (eval (operator exp) env) (list-of-values (operands exp) env))) (else (error "Unknown expression type -- EVAL" exp)))) ! (define (apply procedure arguments) (cond ((primitive-procedure? procedure) (apply-primitive-procedure procedure arguments)) ((compound-procedure? procedure) --- 29,42 ---- env)) ((begin? exp) (eval-sequence (begin-actions exp) env)) ! ((cond? exp) (myeval (cond->if exp) env)) ((application? exp) ! (myapply (myeval (operator exp) env) (list-of-values (operands exp) env))) (else (error "Unknown expression type -- EVAL" exp)))) ! (define (myapply procedure arguments) (cond ((primitive-procedure? procedure) (apply-primitive-procedure procedure arguments)) ((compound-procedure? procedure) *************** *** 54,81 **** (define (list-of-values exps env) (if (no-operands? exps) '() ! (cons (eval (first-operand exps) env) (list-of-values (rest-operands exps) env)))) (define (eval-if exp env) ! (if (true? (eval (if-predicate exp) env)) ! (eval (if-consequent exp) env) ! (eval (if-alternative exp) env))) (define (eval-sequence exps env) ! (cond ((last-exp? exps) (eval (first-exp exps) env)) ! (else (eval (first-exp exps) env) (eval-sequence (rest-exps exps) env)))) (define (eval-assignment exp env) (set-variable-value! (assignment-variable exp) ! (eval (assignment-value exp) env) env) 'ok) (define (eval-definition exp env) (define-variable! (definition-variable exp) ! (eval (definition-value exp) env) env) 'ok) --- 54,81 ---- (define (list-of-values exps env) (if (no-operands? exps) '() ! (cons (myeval (first-operand exps) env) (list-of-values (rest-operands exps) env)))) (define (eval-if exp env) ! (if (true? (myeval (if-predicate exp) env)) ! (myeval (if-consequent exp) env) ! (myeval (if-alternative exp) env))) (define (eval-sequence exps env) ! (cond ((last-exp? exps) (myeval (first-exp exps) env)) ! (else (myeval (first-exp exps) env) (eval-sequence (rest-exps exps) env)))) (define (eval-assignment exp env) (set-variable-value! (assignment-variable exp) ! (myeval (assignment-value exp) env) env) 'ok) (define (eval-definition exp env) (define-variable! (definition-variable exp) ! (myeval (definition-value exp) env) env) 'ok) *************** *** 330,336 **** (define (driver-loop) (prompt-for-input input-prompt) (let ((input (read))) ! (let ((output (eval input the-global-environment))) (announce-output output-prompt) (user-print output))) (driver-loop)) --- 330,336 ---- (define (driver-loop) (prompt-for-input input-prompt) (let ((input (read))) ! (let ((output (myeval input the-global-environment))) (announce-output output-prompt) (user-print output))) (driver-loop))