Normalement, une liste est terminée par le symbole nil. Rien ne nous empêche pourtant de passer n'importe quel objet Common Lisp à la fonction cons. Il est donc possible de créer une suite de paires dont le dernier élément n'est pas nil. Nous appelons ce type de pseudo-listes liste généralisée (en Anglais : dotted list).
Dans la représentation externe d'une liste généralisée, l'objet qui remplace nil est précédé d'un point :
Les fonctions car et cdr ont leur comportement habituel :
La représentation externe des listes généralisées est gérée correctement par read :
La fonction print préfère la notation sans point autant que possible :
Exercice : Expliquer avec une analyse exacte des résultats de read et eval le résultat obtenu par les trois expressions suivantes :
Exercice : Montrer avec des diagrammes de boîtes que les listes générées par read pour les deux représentations externes (1 . ((2 . (3 . nil)) . 4)) et (1 (2 3) . 4) sont identiques.
Irene DURAND