(LIST <ARG1> ... <ARGN>)
ÉVALUER
(LIST 1 2 3)
DONNE UNE LISTE À TROIS ÉLÉMENTS :
(1 2 3)
UNE LISTE PEUT CONTENIR DES SOUS-LISTES
EXEMPLE : REPRÉSENTER UNE "MATRICE"
--> LISTE DE LIGNES:
((1 2 3) (4 5 6) (7 8 9))
REMARQUE : QUAND ON ÉCRIT UNE LISTE, IL FAUT LA FAIRE PRÉCÉDER D'UNE APOSTROPHE '
'(1 2 3)
(CAR <LISTE>)
--> DONNE L'ÉLÉMENT EN TÊTE DE
<LISTE>
(CDR <LISTE>)
--> DONNE LA LISTE OBTENUE EN
SUPPRIMANT L'ÉLÉMENT EN TÊTE
DE <LISTE>
(CONS <ELEMENT> <LISTE>)
--> RECONSTRUIT LA LISTE EN
PLAÇANT <ÉLÉMENT> EN TÊTE DE
<LISTE>
UNE LISTE:
ON A VU QU'UNE EXPRESSION EST
UNE EXPRESSION EST FAITE POUR
UNE LISTE : NON !
(C'EST UNE DONNÉE)
==> IL FAUT UN MOYEN
D'EMPÉCHER L'ÉVALUATION
LA FONCTION (QUOTE <EXP>)
RETOURNE COMME VALEUR
L'EXPRESSION <EXP>
NON ÉVALUÉE
(1 2 3 4)
DONNE UNE ERREUR:
---> 1 N'EST PAS UNE FONCTION
(QUOTE (1 2 3 4))
DONNE LA LISTE (1 2 3 4)
NON ÉVALUÉE !
NOTATION:
(QUOTE <EXP>)
EST NOTÉ :
'<EXP>
ATTENTION : QUOTE N'EST PAS LIST !...
(LIST X Y)
--> (1 2)
'(X Y)
-->
LA FONCTION
(CONS <ELEMENT> <LISTE>)
FABRIQUE EN MACHINE UN
"DOUBLET" DE POINTEURS:
LA LISTE (1 2 3 4)
S'OBTIENT PAR:
(CONS 1
(CONS 2
(CONS 3
(CONS 4
() ))))
LISTE VIDE
--> IL Y A 4 APPELS DE LA
DONC IL Y A CREATION DE 4
"DOUBLETS" POUR FABRIQUER LA
LISTE (1 2 3 4)