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 :
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 de nombres réels) 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 puisque 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...
01 décembre 2017,
mise à jour le 09 janvier 2018,
mise à jour le 28 janvier 2018,
mise à jour le 02 mai 2018,