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
*



Irene DURAND
2011-10-14