(defun somarlista (L1 L2) (if (null L1) L2 (if (null L2) L1 (cons (+ (first L1) (first L2)) (somarlista (rest L1) (rest L2)))))) (defun subtrairlista (L1 L2) (if (null L2) L1 (if (null L1) (cons (- 0 (first L2)) (subtrairlista L1 (rest L2))) (cons (- (first L1) (first L2)) (subtrairlista (rest L1) (rest L2)))))) (defun multiplicarlista(L1 L2) (if (null L2) NIL (if (null L1) NIL (somarlista (mapcar #'(lambda(x) (* x (first L1))) L2) (multiplicarlista (rest L1) L2))))) (defun derivarlista(L1 n) (if (null L1) NIL (if (= 0 n) NIL (cons (* n (first L1)) (derivarlista (rest L1) (- n 1)))))) (defstruct poli o p) (defun somarpoli(p1 p2) (make-poli :o (max (poli-o p1) (poli-o p2)) :p (somarlista (poli-p p1) (poli-p p2)) ))