“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 172 — #182
i
i
i
i
i
i
i
i
172
3
• Techniques de programmation déclarative
– Un foncteur peut avoir des références externes aux autres entités du langage. Par
exemple, il est facile de faire un foncteur qui contient des données calculées
à l’exécution. C’est utile, par exemple, pour inclure de grands tableaux ou des
images sous forme numérique.
– Un foncteur peut être enregistré dans un fichier en utilisant le module Pickle
(voir la documentation de Mozart [23]). Ce fichier peut être lu par tout processus
Mozart, ce qui facilite la création des bibliothèques des foncteurs faits par tiers,
comme la bibliothèque MOGUL de Mozart.
– Un foncteur est léger ; il peut être utilisé pour encapsuler une entité comme un
objet ou une classe, afin de rendre explicite les modules dont l’entité a besoin.
Parce que les foncteurs sont des valeurs, il est possible de les manipuler dans le
langage. Par exemple, un composant logiciel peut faire lui-même de la manipulation
des composants : le composant détermine les composants dont il a besoin et édite ses
liens quand il faut. Davantage de souplesse est possible avec le typage dynamique.
Un composant peut éditer les liens d’un autre composant à l’exécution, en éditant
directement les liens des foncteurs en les évaluant avec les bons arguments.
➤ L’abstraction linguistique
L’abstraction de composant logiciel est utile pour l’organisation de grands programmes.
Pour la rendre plus facile à utiliser, pour garantir qu’elle n’est pas utilisée de façon
inexacte et pour clarifier l’intention du programmeur (en évitant la confusion avec
d’autres techniques de programmation), nous en faisons une abstraction linguistique.
La fonction MyListFunctor correspond à la syntaxe suivante de l’abstraction :
functor
export
append:Append
sort:Sort
member:Member
define
proc {Append ... } ... end
proc {MergeSort ...} ... end
proc {Sort ... } ... {MergeSort ...} ... end
proc {Member ...} ... end
end
Remarquez que l’instruction entre define et end fait une déclaration implicite des
variables, exactement comme l’instruction entre local et in.
Supposons que ce foncteur a été compilé et stocké dans le fichier MyList.ozf.
(Nous verrons plus loin comment compiler un foncteur.) Un module peut être créé
dans l’interface interactive :
Précédent

- 187/370

Suivant