“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 174 — #184
i
i
i
i
i
i
i
i
174
3
• Techniques de programmation déclarative
Figure 3.16 Une capture d’écran de l’application compteur de fréquence des mots.
La spécification du dictionnaire déclaratif
Le compteur utilise un ADT qui s’appelle un dictionnaire déclaratif. Un dictionnaire
est un tableau dynamique où les indices sont des constantes. Ces indices sont appelés
les clés. Dans notre dictionnaire nous utiliserons des atomes ou des entiers comme
clés. Voici l’ensemble d’opérations de base sur le type Dict :
– fun {NewDictionary} : Dict renvoie un nouveau dictionnaire vide.
– fun {Put Dict Feature Value} : Dict prend un dictionnaire et renvoie un nouveau dictionnaire qui ajoute la paire Feature→→Value. Si Feature
existe déjà, le nouveau dictionnaire contiendra Value au lieu de l’ancien
contenu.
– fun {Get Dict Feature} : Value renvoie la valeur qui correspond à
Feature. S’il n’y en a pas, une exception est levée.
– fun {Entries Dict} : List Feature renvoie une liste des paires de
clés et valeurs dans Dict. Chaque paire est un tuple avec étiquette ´#´.
Pour cet exemple nous définissons le type Feature comme Atom | |Int. La
figure 3.18 montre une implémentation dans laquelle le dictionnaire est représenté
comme une liste de paires Key#Value qui sont triées sur la clé. Au lieu de Get,
nous définissons une opération CondGet un peu plus générale :
– fun {CondGet Dict Feature Value 1 } : Value 2 renvoie la valeur qui
correspond à Feature. Si Feature est absent, le dernier argument Value 1 sera
renvoyé.
i
i
i
i
i
i
i
i
174
3
• Techniques de programmation déclarative
Figure 3.16 Une capture d’écran de l’application compteur de fréquence des mots.
La spécification du dictionnaire déclaratif
Le compteur utilise un ADT qui s’appelle un dictionnaire déclaratif. Un dictionnaire
est un tableau dynamique où les indices sont des constantes. Ces indices sont appelés
les clés. Dans notre dictionnaire nous utiliserons des atomes ou des entiers comme
clés. Voici l’ensemble d’opérations de base sur le type Dict :
– fun {NewDictionary} : Dict renvoie un nouveau dictionnaire vide.
– fun {Put Dict Feature Value} : Dict prend un dictionnaire et renvoie un nouveau dictionnaire qui ajoute la paire Feature→→Value. Si Feature
existe déjà, le nouveau dictionnaire contiendra Value au lieu de l’ancien
contenu.
– fun {Get Dict Feature} : Value renvoie la valeur qui correspond à
Feature. S’il n’y en a pas, une exception est levée.
– fun {Entries Dict} : List Feature renvoie une liste des paires de
clés et valeurs dans Dict. Chaque paire est un tuple avec étiquette ´#´.
Pour cet exemple nous définissons le type Feature comme Atom | |Int. La
figure 3.18 montre une implémentation dans laquelle le dictionnaire est représenté
comme une liste de paires Key#Value qui sont triées sur la clé. Au lieu de Get,
nous définissons une opération CondGet un peu plus générale :
– fun {CondGet Dict Feature Value 1 } : Value 2 renvoie la valeur qui
correspond à Feature. Si Feature est absent, le dernier argument Value 1 sera
renvoyé.
