next up previous contents index
Next: Concaténation Up: Opérations de base sur Previous: Tests d'égalité   Contents   Index

Copie d'une liste

Il est rare d'avoir besoin de copier une liste en Common Lisp. On préfère partager la structure le plus possible afin d'économiser la mémoire et d'améliorer la performance. Cependant, certains styles de programmation nécessitent des opérations destructives dont l'effet est de modifier des listes existantes. Dans ce cas, il est nécessaire de copier la liste.

La fonction copy-list copie les cellules de son seul argument. Elle ne copie pas les éléments de la liste. La fonction copy-tree, par contre, copie récursivement toutes les paires de la liste donnée en argument. Exemples :

* (defparameter *l* '((a b) (c d)))

*L*
* (eq *l* *l*)

T
* (eq *l* (copy-list *l*))

NIL
* (equal *l* (copy-list *l*))

T
* (eq (car *l*) (car (copy-list *l*)))

T
* (eq (car *l*) (car (copy-tree *l*)))

NIL
*



Robert STRANDH
2001-09-28