Précédent Suivant
 
Les listes sont ce que l'on nomme une structure de données. C'est la structure de données historique de Lisp (Lisp a même été inventé autour de cette notion par John McCarthy en 1958 au MIT (le fameux Massachussetts Institute of Technology) et le nom de Lisp signifie List Processor: le manipulateur de listes). Les listes sont toujours une structure de données importante pour Scheme, le successeur de Lisp.
 
Une structure de données est une façon d'agréger des valeurs. Il en existe d'autres comme le vecteur ou la table de hachage. Les structures de données ont toutes des qualités qui les font préférer pour certains emplois spécifiques. Les listes sont une structure de données composites puiqu'elles permettent de rassembler en une unique valeur une succession ordonnée non bornée de valeurs. Une liste peut être étendue simplement pour contenir de nouveaux éléments, on peut également (mais plus coûteusement) en retirer. L'accès aux éléments d'une liste est souvent linéaire car il faut parcourir une liste pour en extraire un terme.
 
Les listes que nous manipulerons dans ce cours sont typées: elles ne peuvent contenir que des valeurs ayant toutes la même nature. On dit qu'elles sont homogènes. On pourra donc construire des listes de nombres, des listes d'images, des listes de listes de chaînes de caractères ou des listes de fonction prenant un entier et renvoyant une image, etc. On notera par LISTE[t] le type d'une liste dont les éléments ont le type t. Ainsi les listes précédemment mentionnées auront-elles pour types:
 
LISTE[Nombre]
LISTE[Image]
LISTE[LISTE[string]]
LISTE[int -> Image] 

Tout type de données se caractérise par l'existence de trois sortes de fonctions:
  1. des constructeurs qui permettent de construire ces données,
  2. des accesseurs ou sélecteurs qui permettent d'extraire des informations de ces données,
  3. des reconnaisseurs qui savent reconnaître ces données (ou des sous-ensembles de ces données) parmi d'autres.
 
nat) comme construits à partir de la constante zéro et de la fonction successeur qui prend un entier naturel n et retourne son suivant (l'entier n+1). Les fonctions telles que l'addition ou la multiplication sont aussi des constructeurs. Il n'y a pas d'accesseur pour les nombres puisque le nombre est sa propre information: un nombre n'est pas une information composite. En revanche, le prédicat number? est un reconnaisseur tout comme positive? ou encore odd?. Reconnaissons toutefois que cette vue est un peu ... limite.


Précédent Suivant