- ;;add all items in list
- (defun sumlist (l)
- ( cond
- ( (null l) 0)
- ( t (+ (car l) (sumlist (cdr l))))
- )
- )
- ;;demo sumlist
- (sumlist '(2 4 6))
- ;12
- (sumlist '(2 4 6 10 12 14 16))
- ;64
- ;;multiply all items in list
- (defun multlist (l)
- ( cond
- ( (null l) 1)
- ( t (* (car l) (multlist (cdr l))))
- )
- )
- ;;demo multlist
- (multlist '(2 4 6))
- ;48
- (multlist '(2 4 6 10 12 14 16))
- ;1290240
- ;;filer argument and stop after first argument and return the tail
- (defun rember (x l)
- ( cond
- ( (null l) l)
- ( (eq x (car l))(cdr l))
- ( t ( cons (car l) (rember x (cdr l))))
- )
- )
- ;;demo rember 1
- (rember 2 '(2 3 4))
- ;(3 4)
- (rember 2 '(3 2 4 5))
- ;(3 4 5)
- (rember 2 '(3 2 4 2 5))
- ;(3 4 2 5)
- ;;recursively filter arguement out of all input
- (defun rember (x l)
- ( cond
- ( (null l) l)
- ( (eq x (car l))(rember x (cdr l)))
- ( t ( cons (car l) (rember x (cdr l))))
- )
- )
- ;;demo rember 2
- (rember 2 '(2 3 4))
- ;(3 4)
- (rember 2 '(3 2 4 5))
- ;(3 4 5)
- (rember 2 '(3 2 4 2 5))
- ;(3 4 5)
- ;;recursively take head of inner lists
- (defun firsts (l)
- (cond
- ( (null l)())
- ( t (cons (car (car l))(firsts (cdr l))))
- )
- )
- ;;demo firsts
- (firsts '( (4 5) (6 3)(8 3 1)))
- ;(4 6 8)
- ;;replace second param with first param
- (defun replace (new old l)
- (cond
- ( (null l) l)
- ( (eq old (car l)) (cons new( cdr l)))
- ( t ( (cons (car l) ( replace new old (cdr l)))))
- )
- )
- ;;demo replace
- (replace 3 6 '(6 5 7))
- ;(3 5 7)
- ;;recursion replace all second param with first param
- (defun replaceall (new old l)
- (cond
- ( (null l) l)
- ( (eq old (car l)) (cons new (replaceall new old (cdr l))))
- ( t (cons (car l) (replaceall new old (cdr l))))
- )
- )
- ;;demo replaceall
- (replaceall 3 6 '(6 5 7 6))
- ;(3 5 7 3)
- ;; insert new old etc
- (defun insertR (new old l)
- (cond
- ( (null l) l)
- ( (eq old (car l)) (cons (car l) (cons new (cdr l))))
- ( t (cons (car l) (insertR new old (cdr l))))
- )
- )
- ;;demo insertR
- (insertR 3 6 '(6 7 8))
- ;(6 3 7 8)
- (insertR 3 6 '(1 4 6 7 6))
- ;(1 4 6 3 7 6)
- ;;insert all occurences
- ;; insert new old etc
- (defun insertallR (new old l)
- (cond
- ( (null l) l)
- ( (eq old (car l)) (cons (car l) (cons new (insertallR new old (cdr l)))))
- ( t (cons (car l) (insertallR new old (cdr l))))
- )
- )
- ;;demo insertallR
- (insertallR 3 6 '(6 7 8))
- ;(6 3 7 8)
- (insertallR 3 6 '(1 4 6 7 6))
- ;(1 4 6 3 7 6 3)