Le Lisp (LISt Processing) porte bien son nom : c’est le roi du traitement de listes. Une liste, c’est simplement une suite d’éléments entre parenthèses.
Imaginons une liste de courses pour nos exemples :
(setq maListe '("Pain" "Beurre" "Confiture" "Café"))
Voici les bistouris pour disséquer cette liste et récupérer ce que tu veux.
1. CAR : La Tête 
Cette fonction prend le tout premier élément de la liste. Juste le premier.
Pourquoi ce nom bizarre ? C’est une vieille histoire d’architecture informatique des années 50. Retiens juste « First ».
(car maListe)
;; Résultat : "Pain"
2. CDR : Le Reste du Corps 


Lui, il enlève la tête et te rend tout le reste.
Attention : Le résultat est toujours une liste, même s’il ne reste qu’un seul élément.
(cdr maListe)
;; Résultat : ("Beurre" "Confiture" "Café")
Note : Il a rendu la liste sans le « Pain ».
3. CADR : Le Second (Le Cou) 
C’est le chouchou des programmeurs. Il sert à attraper le deuxième élément.
En réalité, c’est une fusion : c’est le CAR (tête) du CDR (reste).
Traduction : « Prends le reste de la liste, puis prends la tête de ce reste ».
(cadr maListe)
;; Résultat : "Beurre"
4. LAST : La Queue 
Comme son nom l’indique, il va chercher le tout dernier élément de la liste, peu importe sa longueur.
(last maListe)
;; Résultat : "Café"
5. NTH : Le Sniper 
Tu veux un élément précis au milieu ? nth est là pour ça.
Mais attention, c’est un piège pour débutants !
Comme toujours en informatique, on commence à compter à 0.
-
Index 0 = Pain
-
Index 1 = Beurre
-
Index 2 = Confiture
;; Je veux le 3ème élément (donc l'index 2)
(nth 2 maListe)
;; Résultat : "Confiture"
Si tu demandes l’index 50 (qui n’existe pas), il renvoie nil (rien).
6. MEMBER : Le Détective 
Il vérifie si un élément existe dans la liste.
Mais il a une particularité : il ne répond pas juste « Oui » ou « Non ».
S’il trouve l’objet, il renvoie la liste à partir de cet objet.
;; Est-ce qu'il y a de la "Confiture" ?
(member "Confiture" maListe)
;; Résultat : ("Confiture" "Café")
Pourquoi il renvoie ça ? Parce qu’en Lisp, tout ce qui n’est pas vide (nil) est considéré comme Vrai. Donc ça veut dire « Oui, j’ai trouvé, et voici la preuve ».
;; Est-ce qu'il y a du "Champagne" ?
(member "Champagne" maListe)
;; Résultat : nil (Non, dommage !)
Résumé express
-
CAR : Le 1er.
-
CDR : Tout sauf le 1er.
-
CADR : Le 2ème.
-
LAST : Le Dernier.
-
NTH : Un précis (Attention au 0).
-
MEMBER : Cherche et trouve.
- Utile
- Peut mieux faire
- Inutile
Tous les tutos AutoLISP
