“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 6 — #16
i
i
i
i
i
i
i
i
6
1
• Introduction aux concepts de programmation
Z=nil. Nous ajoutons un premier lien Y=7|Z et ensuite un deuxième lien X=6|Y.
Maintenant X référence une liste avec deux liens, une liste qui peut aussi être écrite
comme [6 7].
Le lien H|T est souvent appelé un « cons » dans la littérature (prononcer à l’anglaise), un terme qui vient du langage Lisp
2 . Si T est une liste, alors on pourra utiliser
H et T pour faire la nouvelle liste H|T :
declare
H=5
T=[6 7 8]
{Browse H|T}
La liste H|T peut être écrite [5 6 7 8]. On dit que sa tête est 5 et sa queue est [6
7 8]. La paire H|T peut être décomposée pour retrouver la tête et la queue :
declare
L=[5 6 7 8]
{Browse L.1}
{Browse L.2}
Cela utilise l’opérateur de sélection « . » (point), qui permet de sélectionner le premier
ou le deuxième élément d’une paire de liste. La sélection L.1 renvoie la tête de L,
l’entier 5. La sélection L.2 renvoie la queue de L, la liste [6 7 8]. La figure 1.1
montre ce qui se passe : L est une sorte de chaîne dans laquelle chaque lien a un
élément et nil marque la fin. L.1 renvoie le premier élément et L.2 renvoie le reste
de la chaîne.
La correspondance de formes
Une manière plus compacte de regarder les composants d’une liste est d’utiliser
l’instruction case, qui permet d’en extraire la tête et la queue en même temps :
declare
L=[5 6 7 8]
case L of H|T then {Browse H} {Browse T} end
L’affichage montre 5 et [6 7 8], comme avant. L’instruction case déclare deux
variables locales, H et T, et les lie ensuite avec la tête et la queue de la liste L. On dit
que l’instruction case fait de la correspondance de formes (« pattern matching » en
2. Une grande partie de la terminologie actuelle des listes a été introduite par le langage Lisp vers la fin
des années 1950 [63]. Notre utilisation de la barre verticale vient de Prolog, un langage de programmation
logique qui a été inventé au début des années 1970 [15, 88]. En Lisp, le « cons » s’écrit (H . T) et on
l’appelle aussi une paire de liste.
Précédent

- 21/370

Suivant