CAR CDR CADR ...

CAR et ses déclinaisons
CDR CADR CADDR


Dans une liste il peut - c'est même la majorité des cas - y avoir une multitude d'éléments, avec les fonctions (car), (cdr), (cadr) ... il va être possible d'isoler certains éléments en fonction de leur position.

Moyens mnémotechniques :
CAR   Contenu Autre que le Reste
CDR   Contenu Du Reste

En réalité c'est Content of Address Register pour CAR et
Content of Decrement Register pour CDR

Ces fonctions car (ou cdr ...) doivent recevoir une liste (list) en argument
- car la valeur renvoyée sera le premier élément de la liste
- cdr la valeur renvoyée sera TOUT sauf le premier élément.
- caddr la valeur renvoyée sera le troisième élément de la liste ...

Exemples :

CAR

( car '( x y z ) ) renvoie x qui est le premier élément de la liste
( car '( (x y ) z ) ) renvoie (x y), qui est le premier élément de la liste
( car '( ) ) renvoie nil


CDR

( cdr '( x y z ) ) renvoie (y z) qui est le reste de la liste sans le premier élément
( cdr '( ( x y ) z ) ) renvoie (z) qui est le reste de la liste sans le premier élément
( cdr  '( ) ) renvoie nil


CADR

( cadr '( x y z ) ) renvoie y qui est le deuxième élément de la liste
( cadr '( ) ) renvoie nil

CADDR

( caddr '( x y z ) ) renvoie z qui est le troisième élément de la liste
( caddr '( ) ) renvoie nil



AutoLISP supporte des concaténations de CAR et CDR, jusqu'à une profondeur de 4 niveaux, voir arbre en fin de page.

Par exemple, prenons la variable var suivante : ( setq var '( ( a b ) c d ) )
en "jouant" avec les combinaisons on obtient :

ConcaténationDéveloppementValeurType
aélément
(b)list
bélément
célément
(d)list
délément
Dans une liste de définition des coordonnées d'un point :
CAR extrait la valeur de l'abscisse ou X
CADR extrait la valeur de l'ordonnée ou Y
CADDR extrait la valeur de l'altitude ou Z

Définition de la variable point : ( setq point '( x y z ) )
puis extraction des trois valeurs de la liste (list)
(
setq valeurx ( car point )
           valeury ( cadr point )
           valeurz ( caddr point )
            )

Le point (liste de trois coordonnées) est décomposé en trois valeurs, enregistrées dans trois variables : valeurx, valeury puis valeurz.
Il s'agit de la création de trois nouvelles variables car la variable initiale point est inchangée.


Arbre de déclinaison des quatre niveaux de profondeur


par exemple :

( cadar x ) est équivalent à ( car ( cdr ( car x ) ) )

... à vous de jouer...


Haut de page

revenir au menu LISTES


01 décembre 2017,
mise à jour le 09 janvier 2018,
mise à jour le 28 janvier 2018,
mise à jour le 02 mai 2018,