FONCTION:
PROBLEME: QUE FAIRE LORSQU'ON
VEUT QU'UNE FONCTION RETOURNE
PLUSIEURS RESULTATS ???
EX: SOM-PROD QUI PREND DEUX
NOMBRES, ET CALCULE
SOLUTION: C'EST SIMPLE....
--> ON MET LES DEUX RESULTATS
LA FONCTION "LIST"
(DEFINE (SOM-PROD A B)
... )
DANS UNE LISTE !
(DEFINE (SOM-PROD A B)
( (+ A B) (* A B)))
D'ARGUMENTS
ARGUMENTS
(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>
LA FONCTION
(CONS <ELEMENT> <LISTE>)
FABRIQUE EN MACHINE UN
"DOUBLET" DE POINTEURS:
LA LISTE (1 2 3 4)
S'OBTIENT PAR:
DONC IL Y A CREATION DE 4
(CONS 1
(CONS 2
(CONS 3
(CONS 4
() ))))
LISTE VIDE
--> IL Y A 4 APPELS DE LA
FONCTION "CONS"
"DOUBLETS" POUR FABRIQUER LA
LISTE (1 2 3 4)
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>