Le typage en programmation logique est une question posée depuis longtemps [Bruynooghe 82] et qui n'a pas reçu de réponse qui fasse l'unanimité. Il existe deux points de vue que l'on qualifie l'un de descriptif* et l'autre de prescriptif*. Le point de vue descriptif considère que les types sont une abstraction des programmes. Il n'y a donc pas de programmes mal typés, seulement des programmes dont l'abstraction révèle qu'ils ne peuvent pas remplir la fonction escomptée. C'est donc un point de vue à la Curry*. Le point de vue prescriptif considère que les types sont une spécification partielle des programmes. Certains sont bien typés (satisfont la spécification partielle), d'autres ne le sont pas, mais on ne donne une sémantique qu'aux programmes bien typés. C'est ce point de vue à la Church* qui est adopté en Prolog, et nous l'avons suivi, car nous trouvons qu'il s'accorde mieux avec des stratégies de développement de logiciel qui sont largement acceptées. En effet, une discipline de typage prescriptif est un compromis entre la richesse de la formalisation de la sémantique attendue des programmes et l'automatisation de sa vérification.
Notre travail d'implémentation de Prolog nous a d'abord conduit à préciser la discipline de typage du langage car c'est un point où Miller et Nadathur son restés très imprécis [Brisset 92, Brisset et Ridoux 92b, Brisset et Ridoux 94]. Ensuite, l'utilisation de dans des applications concrètes a connu certaines difficultés dont nous avons conclu que le typage générique n'est pas bien adapté à la programmation logique. Nous avons étudié le problème avec Pascale Louvet et proposé une discipline de type paramétrique pour la programmation logique [Louvet et Ridoux 96] dont les détails sont décrits dans sa thèse [Louvet 96]. Nous avons appelé Prolog cette variante paramétrique de Prolog.
Nous sommes donc passés par deux points de vue différents sur le typage de Prolog. Ceux-ci sont séparés par environ trois années et une expérimentation en vraie grandeur. Nous présentons un état des lieux à l'issue de l'implémentation de , puis notre proposition de typage paramétrique.