“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 49 — #59
i
i
i
i
i
i
i
i
2.3 Le langage noyau déclaratif
49
– Une lettre majuscule suivie par zéro ou plusieurs caractères alphanumériques
(lettres, chiffres ou un caractère de soulignement), comme X, X1 ou VoiciUneVariableLongue_NestCePas.
– Toute séquence de caractères affichables, mise entre ` (guillemet arrière, « backquote »), comme `voici une variable qui vaut 25$ !`.
Une définition précise de la syntaxe des identificateurs est donnée dans l’annexe B.
Toutes les variables fraîchement déclarées sont non liées avant l’exécution des instructions. Tous les identificateurs doivent être déclarés explicitement.
2.3.2 Les valeurs et les types
Un type de données est un ensemble de valeurs avec un ensemble d’opérations sur
ces valeurs. Une valeur est d’un type si elle est dans l’ensemble du type. Le modèle
déclaratif est typé : il calcule avec un ensemble bien défini de types qui sont appelés
types de base ou types primitifs. Par exemple, les programmes peuvent calculer avec
des entiers ou des enregistrements, qui sont respectivement tous de type entier ou
enregistrement. Toute tentative d’utiliser une opération avec des valeurs d’un type
erroné est détectée par le système et provoquera une erreur (voir section 2.7). Le
modèle n’a pas d’autres restrictions sur l’utilisation des types.
Parce que toutes les utilisations des types sont vérifiées, il n’est pas possible pour un
programme de se comporter en dehors du modèle. Par exemple, de se planter à cause
d’opérations non définies sur ces structures de données. Il est toujours possible pour
un programme de lever une condition d’erreur. Par exemple, en faisant une division
par zéro. Dans le modèle déclaratif, un programme qui lève une condition d’erreur
terminera immédiatement. Il n’y a rien dans ce modèle pour traiter les erreurs. Dans
la section 2.7 nous étendrons le modèle avec un nouveau concept, les exceptions, afin
de traiter les erreurs. Dans le modèle étendu, une erreur de type peut être traitée en
restant à l’intérieur du modèle.
En plus des types de base, les programmes peuvent définir leurs propres types. Ces
types s’appellent des types de données abstraits (« abstract data types », ADT). Le
chapitre 3 et les chapitres ultérieurs montrent comment définir les ADT. Il y a d’autres
formes d’abstractions de données que les ADT. La section 5.4 résume les possibilités.
Les types de base
Les types de base du modèle déclaratif sont les nombres (entiers et flottants), les enregistrements (y compris les atomes, booléens, tuples, listes et chaînes) et les procédures.
Le tableau 2.2 définit leur syntaxe. Le non terminal v dénote une valeur partiellement
construite. Plus loin nous verrons d’autres types, comme les noms, les chunks, les
foncteurs, les cellules, les dictionnaires, les tableaux (« arrays »), les classes et les
objets. Parmi tous les nouveaux types, il n’y en a que quatre nouveaux de base : les
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
2.3 Le langage noyau déclaratif
49
– Une lettre majuscule suivie par zéro ou plusieurs caractères alphanumériques
(lettres, chiffres ou un caractère de soulignement), comme X, X1 ou VoiciUneVariableLongue_NestCePas.
– Toute séquence de caractères affichables, mise entre ` (guillemet arrière, « backquote »), comme `voici une variable qui vaut 25$ !`.
Une définition précise de la syntaxe des identificateurs est donnée dans l’annexe B.
Toutes les variables fraîchement déclarées sont non liées avant l’exécution des instructions. Tous les identificateurs doivent être déclarés explicitement.
2.3.2 Les valeurs et les types
Un type de données est un ensemble de valeurs avec un ensemble d’opérations sur
ces valeurs. Une valeur est d’un type si elle est dans l’ensemble du type. Le modèle
déclaratif est typé : il calcule avec un ensemble bien défini de types qui sont appelés
types de base ou types primitifs. Par exemple, les programmes peuvent calculer avec
des entiers ou des enregistrements, qui sont respectivement tous de type entier ou
enregistrement. Toute tentative d’utiliser une opération avec des valeurs d’un type
erroné est détectée par le système et provoquera une erreur (voir section 2.7). Le
modèle n’a pas d’autres restrictions sur l’utilisation des types.
Parce que toutes les utilisations des types sont vérifiées, il n’est pas possible pour un
programme de se comporter en dehors du modèle. Par exemple, de se planter à cause
d’opérations non définies sur ces structures de données. Il est toujours possible pour
un programme de lever une condition d’erreur. Par exemple, en faisant une division
par zéro. Dans le modèle déclaratif, un programme qui lève une condition d’erreur
terminera immédiatement. Il n’y a rien dans ce modèle pour traiter les erreurs. Dans
la section 2.7 nous étendrons le modèle avec un nouveau concept, les exceptions, afin
de traiter les erreurs. Dans le modèle étendu, une erreur de type peut être traitée en
restant à l’intérieur du modèle.
En plus des types de base, les programmes peuvent définir leurs propres types. Ces
types s’appellent des types de données abstraits (« abstract data types », ADT). Le
chapitre 3 et les chapitres ultérieurs montrent comment définir les ADT. Il y a d’autres
formes d’abstractions de données que les ADT. La section 5.4 résume les possibilités.
Les types de base
Les types de base du modèle déclaratif sont les nombres (entiers et flottants), les enregistrements (y compris les atomes, booléens, tuples, listes et chaînes) et les procédures.
Le tableau 2.2 définit leur syntaxe. Le non terminal v dénote une valeur partiellement
construite. Plus loin nous verrons d’autres types, comme les noms, les chunks, les
foncteurs, les cellules, les dictionnaires, les tableaux (« arrays »), les classes et les
objets. Parmi tous les nouveaux types, il n’y en a que quatre nouveaux de base : les
© Dunod – La photocopie non autorisée est un délit
