dribbling to file "sept25" NIL CL-USER(3): (defun traverse (tree) (cond ((atom tree) tree) (t (append (traverse (second tree)) (traverse (third tree)))))) TRAVERSE CL-USER(4): (travers '(+ a b)) Error: attempt to call `TRAVERS' which is an undefined function. [condition type: UNDEFINED-FUNCTION] Restart actions (select using :continue): 0: Try calling TRAVERS again. 1: Return a value instead of calling TRAVERS. 2: Try calling a function other than TRAVERS. 3: Setf the symbol-function of TRAVERS and call it again. 4: Return to Top Level (an "abort" restart) 5: Abort # [1] CL-USER(5): :pop CL-USER(6): (traverse '(+ a b)) Error: `A' is not of the expected type `LIST' [condition type: TYPE-ERROR] Restart actions (select using :continue): 0: Return to Top Level (an "abort" restart) 1: Abort # [1] CL-USER(7): :pop CL-USER(8): (defun traverse (tree) (cond ((atom tree) (list tree)) (t (append (traverse (second tree)) (traverse (third tree)))))) TRAVERSE CL-USER(9): (traverse '(+ a b)) (A B) CL-USER(10): (traverse '(+ (- a b) (+ (/ c d) e))) (A B C D E) CL-USER(11): (defun addone (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (traverse (second tree)) (traverse (third tree)))))) ADDONE CL-USER(12): (addone '(+ (- a b) (+ (/ c d) e))) (A B C D E) CL-USER(13): (defun addone (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (addone (second tree)) (addone (third tree)))))) ADDONE CL-USER(14): (addone '(+ (- a b) (+ (/ c d) e))) ((+ A 1) (+ B 1) (+ C 1) (+ D 1) (+ E 1)) CL-USER(15): (defun addone-alt-expression (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (list (first tree)) (addone (second tree)) (addone (third tree)))))) ADDONE-ALT-EXPRESSION CL-USER(16): (defun addone-alt-expression (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (list (first tree)) (addone-alt-expression (second tree)) (addone-alt-expression (third tree)))))) ADDONE-ALT-EXPRESSION CL-USER(17): (addone-alt-expression '(+ a b)) (+ (+ A 1) (+ B 1)) CL-USER(18): (addone-alt-expression '(/ a b)) (/ (+ A 1) (+ B 1)) CL-USER(19): (addone-alt-expression '(+ (- a b) (+ (/ c d) e))) (+ - (+ A 1) (+ B 1) + / (+ C 1) (+ D 1) (+ E 1)) CL-USER(20): (/ 3200 150) 64/3 CL-USER(21): (float +) Error: the value of NUMBER is (/ 3200 150), which is not of type REAL. [condition type: TYPE-ERROR] Restart actions (select using :continue): 0: supply a new value for NUMBER. 1: Return to Top Level (an "abort" restart) 2: Abort # [1] CL-USER(22): :pop CL-USER(23): (/ 3200 150.0) 21.333334 CL-USER(24): (/ 5100 150.0) 34.0 CL-USER(25): (defun addone-alt-expression (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (list (list (first tree) (addone-alt-expression (second tree)) (addone-alt-expression (third tree)))))))) ADDONE-ALT-EXPRESSION CL-USER(26): (addone-alt-expression '(+ (- a b) (+ (/ c d) e))) ((+ ((- (#) (#))) ((+ (#) (#))))) CL-USER(27): (print (addone-alt-expression '(+ (- a b) (+ (/ c d) e)))) ((+ ((- ((+ A 1)) ((+ B 1)))) ((+ ((/ ((+ C 1)) ((+ D 1)))) ((+ E 1)))))) ((+ ((- (#) (#))) ((+ (#) (#))))) CL-USER(28): (defun addone-alt-expression (tree) (cond ((atom tree) (list (list '+ tree 1))) (t (append (list (first tree) (addone-alt-expression (second tree)) (addone-alt-expression (third tree))))))) ADDONE-ALT-EXPRESSION CL-USER(29): (print (addone-alt-expression '(+ (- a b) (+ (/ c d) e)))) (+ (- ((+ A 1)) ((+ B 1))) (+ (/ ((+ C 1)) ((+ D 1))) ((+ E 1)))) (+ (- ((+ A 1)) ((+ B 1))) (+ (/ ((+ C 1)) ((+ D 1))) ((+ E 1)))) CL-USER(30): (defun addone-alt-expression (tree) (cond ((atom tree) (list '+ tree 1)) (t (append (list (first tree) (addone-alt-expression (second tree)) (addone-alt-expression (third tree))))))) ADDONE-ALT-EXPRESSION CL-USER(31): (print (addone-alt-expression '(+ (- a b) (+ (/ c d) e)))) (+ (- (+ A 1) (+ B 1)) (+ (/ (+ C 1) (+ D 1)) (+ E 1))) (+ (- (+ A 1) (+ B 1)) (+ (/ (+ C 1) (+ D 1)) (+ E 1))) CL-USER(32): (defun add-alt-expressions (tree) (cond ((atom tree) (list (list '+ tree 1) (list '+ tree 2)) (t (append (mapcar #'(lambda (e) (list (first tree) e (second tree))) (add-alt-expressions (second tree))) (add-alt-expressions (third tree))))))) ADD-ALT-EXPRESSIONS CL-USER(33): (defun add-alt-expressions (tree) (cond ((atom tree) (list (list '+ tree 1) (list '+ tree 2))) (t (append (mapcar #'(lambda (e) (list (first tree) e (third tree))) (add-alt-expressions (second tree))) (mapcar #'(lambda (e) (list (first tree) (second tree) e)) (add-alt-expressions (third tree))))))) ADD-ALT-EXPRESSIONS CL-USER(34): (print (add-alt-expressions '(+ (- a b) (+ (/ c d) e)))) ((+ (- (+ A 1) B) (+ (/ C D) E)) (+ (- (+ A 2) B) (+ (/ C D) E)) (+ (- A (+ B 1)) (+ (/ C D) E)) (+ (- A (+ B 2)) (+ (/ C D) E)) (+ (- A B) (+ (/ (+ C 1) D) E)) (+ (- A B) (+ (/ (+ C 2) D) E)) (+ (- A B) (+ (/ C (+ D 1)) E)) (+ (- A B) (+ (/ C (+ D 2)) E)) (+ (- A B) (+ (/ C D) (+ E 1))) (+ (- A B) (+ (/ C D) (+ E 2)))) ((+ (- (+ A 1) B) (+ (/ C D) E)) (+ (- (+ A 2) B) (+ (/ C D) E)) (+ (- A (+ B 1)) (+ (/ C D) E)) (+ (- A (+ B 2)) (+ (/ C D) E)) (+ (- A B) (+ (/ (+ C 1) D) E)) (+ (- A B) (+ (/ (+ C 2) D) E)) (+ (- A B) (+ (/ C (+ D 1)) E)) (+ (- A B) (+ (/ C (+ D 2)) E)) (+ (- A B) (+ (/ C D) (+ E 1))) (+ (- A B) (+ (/ C D) (+ E 2)))) CL-USER(35): (dribble)