; Symbolic +, e.g. (s+ 0 'x)
(defun s+ (x y)
(cond ((numberp x)
(cond ((numberp y) (+ x y))
((zerop x) y)
(t (list '+ x y))))
((and (numberp y)
(zerop y)) x)
(t (list '+ x y)) ))
; Symbolic *, e.g. (s* 'x 1)
(defun s* (x y)
(cond ((numberp x)
(cond ((numberp y) (* x y))
((zerop x) 0)
((equal x 1) y)
(t (list '* x y)) ))
((numberp y)
(cond ((zerop y) 0)
((equal y 1) x)
(t (list '* x y)) ))
(t (list '* x y)) ))
Contents    Page-10    Prev    Next    Page+10    Index