Best viewed in 24pt and full-screen
next up previous contents
Next: X-Y-Z Up: A-Z Previous: U

V-W

% v_i : vanilla interpreter
type v_i o -> o .
v_i true .
v_i (B1 , B2) :- v_i B1 , v_i B2 .              % tex2html_wrap_inline55360
v_i B :- clause B C , v_i C .                    % tex2html_wrap_inline55710 et tex2html_wrap_inline55712


Écriture en tex2html_wrap_inline56836Prolog du méta-interpréteur de Prolog en Prolog. La
recherche en profondeur et l´unification sont complètement sous-
traitées au métalangage.

Vanilla interpreter. n.m. (anglo-américain pour interpréteur de base, par analogie avec la crème glacée de base qui serait toujours à la vanille) Le méta-interpréteur de Prolog écrit en Prolog qui sert de base à de nombreux autres développements en métaprogrammation (tex2html_wrap_inline55796 prédicat v_i*).

On peut ajouter à l'interpréteur de Prolog les règles suivantes pour en faire un interpréteur de tex2html_wrap_inline56836Prolog :

v_i (sigma B) :- v_i (B _) .                                % tex2html_wrap_inline55788

v_i (pi B) :- pi ctex2html_wrap_inline56812( v_i (B c) ) .                          % tex2html_wrap_inline55790

v_i (H => B) :-                                                 % tex2html_wrap_inline55742
         ( pi Btex2html_wrap_inline56812(pi Ctex2html_wrap_inline56812( clause B C :- instance B H C )) => v_i B ) .

type instance o -> o -> o -> o .

instance B (pi H) E :- instance B (H _) E .       % tex2html_wrap_inline55712

instance B (B :- C) C .                                      % tex2html_wrap_inline55710

On peut ajouter à cet interpréteur des paramètres et des opérations de contrôle pour construire une trace des calculs, instrumenter la démonstration, ou bien la rendre complète. Ce ne serait plus un vanilla interpreter (tex2html_wrap_inline55796 un méta-interpréteur complet*).

tex2html_wrap_inline56836-Variable. n.f. Désigne une variable introduite par une tex2html_wrap_inline56836-abstraction*. Les tex2html_wrap_inline56836-variables* acquièrent une valeur par le biais de la tex2html_wrap_inline53988-réduction*. On peut les interpréter comme les paramètres formels d'une fonction.

Variable logique. n.f. Désigne une variable qui résulte de l'élimination d'une quantification essentiellement existentielle*. Elle désigne un terme inconnu qui pourrait satisfaire la formule quantifiée. Leur valeur se précise par le biais des substitutions* calculées par l´unification*.

Variable objet. n.f. (rel. métaprogrammation*) Variable des structures manipulées par un métaprogramme. Un enjeu de la métaprogrammation est de préserver à la fois la substituabilité et la portée des variables objet. Les solutions traditionnelles de Prolog (représentations close* et non close*) sacrifient l'une ou l'autre de ces propriétés. La solution tex2html_wrap_inline56836Prolog (représentation par abstraction*) les préserve toutes les deux.

Variable de type. n.f. Variable apparaissant en position de type. Une variable dans un type assigné à une expression, est généralement considérée comme étant universellement quantifiée. Ainsi, la déclaration

type cons A -> (list A) -> (list A) .

se lit «pour tout type tex2html_wrap_inline56804, cons est de type tex2html_wrap_inline56802». C'est le point de vue du polymorphisme générique à la tex2html_wrap_inline54612. C'est aussi le point de vu explicité dans certains articles sur tex2html_wrap_inline56836Prolog [Miller et Nadathur 86b]. Cependant, ce point de vue n'explique pas bien le rôle des types lors de l'exécution. Il est significatif que le théorème de correction sémantique du typage à la tex2html_wrap_inline54612 permet justement de ne plus avoir de types lors de l'exécution [Milner 78].

Un autre point de vue est de considérer une variable de type comme signifiant un paramètre de type [Louvet et Ridoux 96, Louvet 96]. Dans ce cas, la déclaration précédente se lit «pour tout type tex2html_wrap_inline56804, (cons tex2html_wrap_inline56804) est de type tex2html_wrap_inline56802». Ici, tex2html_wrap_inline56804 est passé en paramètre de cons. C'est le point de vue du polymorphisme paramétrique*.

Vrai. n.m. (rel. faux*) En tex2html_wrap_inline56836Prolog, on peut coder le vrai (la tautologie) et le faux (l'absurdité) sans faire référence à un domaine de calcul, ni à une signature particulière. Par exemple,

... :- sigma Xtex2html_wrap_inline56812(pi ytex2html_wrap_inline56812( X = y )) .

et

... :- pi xtex2html_wrap_inline56812( sigma Ytex2html_wrap_inline56812(x = Y) ) .

ne dépendent pas d'un domaine de calcul, mais un peu de la signature. En effet, il faut que la relation = corresponde bien à l'égalité. On peut s'affranchir de tout contexte avec les formules suivantes.

... :- pi ptex2html_wrap_inline56812p .

et

... :- pi ptex2html_wrap_inline56812( p => p ) .


next up previous contents
Next: X-Y-Z Up: A-Z Previous: U

Olivier Ridoux
Mon Apr 27 11:10:23 MET DST 1998