(define (plus-simplify e1 e2) (cond ((and (number? e1) (number? e2)) (+ e1 e2)) ((and (number? e1) (zero? e1)) e2) ; 0 plus x is x ((and (number? e2) (zero? e2)) e1) (else (list '+ e1 e2)))) ; couldn't simplify (define (times-simplify e1 e2) (cond ((and (number? e1) (number? e2)) (* e1 e2)) ((and (number? e1) (zero? e1)) 0) ; 0 times anything is 0 ((and (number? e2) (zero? e2)) 0) ((and (number? e1) (= e1 1)) e2) ; 1 times x is x ((and (number? e2) (= e2 1)) e1) (else (list '* e1 e2)))) ; couldn't simplify
Last modified: Wed Mar 29 20:28:20 PST 2000