(defparameter *l* '(1 2 3 4)) (setf (car (last *l*)) 0) *l* ;; (1 2 3 0) (member 3 *l*) (member 5 *l*) (nthcdr 0 *l*) ;; (1 2 3 0) (nthcdr 1 *l*) ;; (2 3 0) (nthcdr 2 *l*) ;; (3 0) (nthcdr 3 *l*) ;; (0) (revappend '(3 2 1 0) '(4 5 6)) ;; (0 1 2 3 4 5 6) (defparameter *l* '(1 2 3 4 5 6 7 8)) (butlast *l*) ;; (1 2 3 4 5 6 7) *l* ;; (1 2 3 4 5 6 7 8) (defparameter *tree1* '(1 (1 2) (1 2 3) (1 2 3 4))) (subst "two" 2 *tree1*) ;; (1 (1 "two") (1 "two" 3) (1 "two" 3 4)) *tree1* ;; (1 (1 2) (1 2 3) (1 2 3 4)) (subst-if 0 #'numberp *tree1*) ;; (0 (0 "two") (0 "two" 0) (0 "two" 0 0)) (subst-if-not 0 #'consp *tree1*) ;; (0 (0 "two") (0 "two" 0) (0 "two" 0 0)) (subst-if 0 #'consp *tree1*) ;; (0 (0 0 . 0) (0 0 0 . 0) (0 0 0 0 . 0) . 0) ;; Listes pour représenter des ensembles (defparameter *e* ()) (adjoin 1 *e*) *e* (setf *e* (adjoin 1 *e*)) (setf *e* (adjoin 2 *e*)) (setf *e* (adjoin 3 *e*)) (setf *e* (adjoin 2 *e*)) (setf *e* (adjoin 4 *e*)) (defparameter *e2* '(2 3 4 5)) (intersection *e* *e2*) (union *e* *e2*) (set-difference *e* *e2*) (set-difference *e2* *e*) (defparameter *e1* '(1 2 3 4 5 6)) (set-difference *e1* *e2*) *e1* (nset-difference *e1* *e2*) *e1* (set-exclusive-or *e* *e2*) (subsetp '(1 3) *e*) (merge 'list '(1 3 5 7) '(2 4 6 8) #'<) ;; (1 2 3 4 5 6 7 8) (merge 'vector '(1 3 5 7) '(2 4 6 8) #'<) ;; #(1 2 3 4 5 6 7 8) (merge 'string '(#\a #\c #\e) '(#\b #\d) #'char<) "abcde" (length '(1 2 3 4)) (length "toto") (subseq '(1 2 3 4 5) 2) (subseq '(1 2 3 4 5) 2 3) (copy-seq *l*) (copy-list *l*) (copy-seq "toto") (defparameter *l* '(1 2 3 4 5 6 7)) (remove 4 *l*) ;; (1 2 3 5 6 7) *l* ;; (1 2 3 4 5 6 7) (remove #\o "toto") "tt" (setf *l* '(1 2 3 4 3 5 3 6 7)) (remove-duplicates *l*) ;; (1 2 4 5 3 6 7) *l* ;; (1 2 3 4 3 5 3 6 7) (remove-duplicates *l* :from-end t) ;; (1 2 3 4 5 6 7) (position 3 *l*) ;; 4 (elt *l* 3) ;; 5 (substitute "trois" 3 *l*) ;; (1 2 4 5 "trois" 6 7) *l* ;; (1 2 4 5 "trois" 6 7) (mismatch '(1 2 3 4 5) '(1 2 3 4 6 7)) ;; 4 (mismatch '(1 2 3 4 5) '(1 2 3 4 5)) ;; NIL (mismatch "TOTO" "Toto") 1 ;; listes d'association (defparameter *la* '((blue . bleu) (red . rouge) (yellow . jaune))) (assoc 'red *la*) ;; (RED . ROUGE) (assoc 'green *la*) ;; NIL (defparameter *la2* '(("un" . 1) ("deux" . 2) ("trois" . 3))) (assoc "un" *la2*) ;; NIL (eql "un" "un") ;; NIL (equal "un" "un") ;; T (assoc "un" *la2* :test #'equal) ;; ("un" . 1) (acons "deux" 2 nil) ;; (("deux" . 2)) (acons "un" 1 (acons "deux" 2 nil)) ;; (("un" . 1) ("deux" . 2)) (assoc-if (lambda (x) (> (length x) 2)) *la2*) ("deux" . 2) (rassoc 'bleu *la*) ;; recherche sur le cdr ;; (BLUE . BLEU) (rassoc-if #'evenp *la2*) ;; ("deux" . 2) (rassoc-if-not #'evenp *la2*) ;; ("un" . 1) (pairlis '(4 5) '("quatre" "cinq")) ;; ((5 . "cinq") (4 . "quatre")) (pairlis '(4 5) '("quatre" "cinq") *la2*) ;; ((5 . "cinq") (4 . "quatre") ("un" . 1) ("deux" . 2) ("trois" . 3)) ;; substitutions (sublis '((x . 1) (y . 2) (z . 3)) '(* (+ x y) (- z 4))) ;; (* (+ 1 2) (- 3 4))