;; *-* lisp *-* (defun square (x) (* x x)) (defun cube (x) (* x x x)) (defun sum-of-list (lst) (cond ((null lst) 0) (t (+ (first lst) (sum-of-list (rest lst)))))) (defun product-of-list (lst) (cond ((null lst) 1) (t (* (first lst) (product-of-list (rest lst)))))) (defun factorial (n) (cond ((= n 0) 1) (t (* n (factorial (- n 1)))))) (defun remainder (n m) (cond ((< n m) n) (t (remainder (- n m) m)))) (defun cube-list (lst) (cond ((null lst) nil) (t (cons (cube (first lst)) (cube-list (rest lst)))))) (defun fibonacci (n) (cond ((> n 2) (+ (fibonacci (- n 1)) (fibonacci (- n 2)))) (t (cond ((>= n 1) 1) (t 0))))) (defun getassoc (fld asc) (let ((lst (rest (assoc fld asc)))) (cond ((> (length lst) 1) lst) (t (first lst)))))) (defun setassoc-n (fld val asc) (setf (second (assoc fld asc)) val)) (defun setassoc-list (fld val asc) (setf (rest (assoc fld asc)) val)) (defun setassoc (fld val asc) (cond ((listp (getassoc fld asc)) (setassoc-list fld val asc)) (t (setassoc-n fld val asc))))