3 La structure de liste

Avant d’étudier la structure de liste, nous passons par la définition d’un couple. Un couple permet de considérer un groupement de 2 valeurs. Un couple peut-être construit à l’aide de la fonction cons : (cons 1 2) est évalué à (1 . 2). (Ici, le point peut être considéré comme un foncteur, comme en Prolog). Le premier (resp. second) élément du couple est récupéré à l’aide la fonction car (resp. cdr). (car (cons 1 2)) (resp. (cdr (cons 1 2))) est évalué à 1 (resp. 2). À partir de la notion de couple, il est maintenant possible de définir les listes : une liste est une couple dont le premier élément représente la tête de la liste, et le second le reste de la liste, ce reste étant lui même une liste. (Cela était déjà le cas en Prolog.) La liste vide est notée (). Ainsi la liste (2 4 6 8 10) est en réalité un racourci qui signifie (cons 2 (cons 4 (cons 6 (cons 8 (cons 10 ’()))))). Les fonctions car et cdr permettent donc de récupérer la tête et le reste d’une liste.

3.1 Manipulation de listes

Définir les fonctions suivantes :

  1. (der l) retourne le dernier élément de la liste x.
  2. (nieme l n) retourne le n-ième élément de la liste l.
  3. (elem l e) retourne vrai si e est un élément de la liste l.
  4. (concat x y) retourne la concaténation des listes x et y.
  5. (long l) retourne la longueur de la liste l.