Best viewed in 24pt and full-screen
next up previous contents
Next: Remerciements Up: A-Z Previous: V-W

X-Y-Z

kind zip_arbre2 type -> type .
type zip (arbre2 A) -> (arbre2 A) -> (arbre2 A)
      -> (list ((zip_arbre2 A)->(zip_arbre2 A)->o)) -> (zip_arbre2 A) .
type (zip_gauche, zip_droite) (zip_arbre2 A) -> (zip_arbre2 A) -> o .
zip_gauche (zip Haut (ntex2html_wrap52064ud GaucheG GaucheD) Droite Chemin)
      (zip (ntex2html_wrap52064ud Haut Droite) GaucheG GaucheD [zip_gauche|Chemin]) .
zip_droite (zip Haut Gauche (ntex2html_wrap52064ud DroiteG DroiteD) Chemin)
      (zip (ntex2html_wrap52064ud Gauche Haut) DroiteG DroiteD [zip_droite|Chemin]) .


Structure de curseur mobile (zip) pour le parcours d´arbres binaires par
retournement de pointeur [Schorr et Waite 67, Gries 79].

Y. Aussi appelé combinateur paradoxal. C'est un combinateur de point-fixe : tex2html_wrap_inline56814. Il est définissable dans le tex2html_wrap_inline56836-calcul* pur, tex2html_wrap_inline56818, mais il ne l'est pas dans le tex2html_wrap_inline56836-calcul simplement typé*. En fait, aucun combinateur de point-fixe n'est définissable dans le tex2html_wrap_inline56836-calcul simplement typé, et donc par des termes de tex2html_wrap_inline56836Prolog. Or, ce sont ces combinateurs qui donnent la puissance de calcul de la récursion générale au tex2html_wrap_inline56836-calcul.

La puissance de calcul de tex2html_wrap_inline56836Prolog ne vient donc pas de la structure de ses termes, mais seulement de la récursivité dans les clauses, comme cela est déjà le cas en Prolog*. Les termes de tex2html_wrap_inline56836Prolog* n'ont donc pas tant un rôle calculatoire qu'un rôle de représentation de structures abstraites.

Il faut noter que le tex2html_wrap_inline56836-calcul simplement typé contient la possibilité de définir des itérateurs sur les types inductifs* (entier, listes, arbres, etc. [Böhm et Berarducci 85, Pierce et al. 89]). Dans l'état actuel de la technologie de tex2html_wrap_inline56836Prolog, c'est plutôt moins efficace que la programmation récursive traditionnelle, mais cela permet d'utiliser des termes évaluables sans passer par la résolution. Cela peut être intéressant pour simplifier la structure d'un programme en réservant la récursivité au calcul principal et en utilisant les termes évaluables pour des aspects plus marginaux. Cela peut augmenter la réversibilité des programmes en évitant d'employer un évaluateur explicite (par exemple, le prédicat évaluable is). Par exemple, le prédicat harrop* utilise une notation en tex2html_wrap_inline56836-terme de la polarité et de son inversion (tex2html_wrap_inline55796 ex.progr. définitions PLUS*, MOINS* et INV*)


next up previous contents
Next: Remerciements Up: A-Z Previous: V-W

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