“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 50 — #60
i
i
i
i
i
i
i
i
50
2
• La programmation déclarative
noms, les chunks, les cellules et les ports (les ports sont hors de notre portée). Pour
une explication complète, consultez CTM et la documentation de Mozart [97, 23].
Le typage dynamique
Fondamentalement, il y a deux approches : le typage dynamique et le typage statique.
Dans le typage statique, les types de toutes les variables sont connus à la compilation.
Dans le typage dynamique, le type d’une variable est connu seulement quand la
variable est liée. Le modèle déclaratif est dynamiquement typé. Le compilateur tente de
vérifier que toutes les opérations utilisent des valeurs du type approprié. Mais à cause
du typage dynamique, certains tests du type sont nécessairement faits à l’exécution.
La hiérarchie des types
Les types de base du modèle déclaratif peuvent être classifiés dans une hiérarchie. La
figure 2.16 montre cette hiérarchie.
Literal
...
...
Int
Float
Number
Record
Tuple
Value
Procedure
Atom
Bool
True
False
Char
List
String
...
...
Figure 2.16 La hiérarchie des types du modèle déclaratif.
Chaque nœud représente un type. La hiérarchie est ordonnée par inclusion d’ensembles, c’est-à-dire que toutes les valeurs du type d’un nœud sont aussi des valeurs
du type de son nœud parent. Par exemple, tous les tuples sont des enregistrements
et toutes les listes sont des tuples. Cela implique que toutes les opérations d’un type
sont également possibles pour un sous-type. Toutes les opérations sur les listes sont
valables aussi pour les chaînes de caractères. Plus loin nous étendrons cette hiérarchie.
Par exemple, un littéral peut être un atome (voir section suivante) ou un autre genre
de constante appelée un nom (voir la documentation de Mozart [23]). Les parties
incomplètes de la hiérarchie sont indiquées avec « . . . ».
i
i
i
i
i
i
i
i
50
2
• La programmation déclarative
noms, les chunks, les cellules et les ports (les ports sont hors de notre portée). Pour
une explication complète, consultez CTM et la documentation de Mozart [97, 23].
Le typage dynamique
Fondamentalement, il y a deux approches : le typage dynamique et le typage statique.
Dans le typage statique, les types de toutes les variables sont connus à la compilation.
Dans le typage dynamique, le type d’une variable est connu seulement quand la
variable est liée. Le modèle déclaratif est dynamiquement typé. Le compilateur tente de
vérifier que toutes les opérations utilisent des valeurs du type approprié. Mais à cause
du typage dynamique, certains tests du type sont nécessairement faits à l’exécution.
La hiérarchie des types
Les types de base du modèle déclaratif peuvent être classifiés dans une hiérarchie. La
figure 2.16 montre cette hiérarchie.
Literal
...
...
Int
Float
Number
Record
Tuple
Value
Procedure
Atom
Bool
True
False
Char
List
String
...
...
Figure 2.16 La hiérarchie des types du modèle déclaratif.
Chaque nœud représente un type. La hiérarchie est ordonnée par inclusion d’ensembles, c’est-à-dire que toutes les valeurs du type d’un nœud sont aussi des valeurs
du type de son nœud parent. Par exemple, tous les tuples sont des enregistrements
et toutes les listes sont des tuples. Cela implique que toutes les opérations d’un type
sont également possibles pour un sous-type. Toutes les opérations sur les listes sont
valables aussi pour les chaînes de caractères. Plus loin nous étendrons cette hiérarchie.
Par exemple, un littéral peut être un atome (voir section suivante) ou un autre genre
de constante appelée un nom (voir la documentation de Mozart [23]). Les parties
incomplètes de la hiérarchie sont indiquées avec « . . . ».
