8
votes

Comment puis-je réparer ce prédicat circulaire dans PRolog?

Pourquoi cela ne fonctionne-t-il pas pour définir "marié" dans prologg? XXX

Ces types de prédicats circulaires ne sont-ils pas autorisés? Comment puis-je le réparer?

merci


0 commentaires

3 Réponses :


5
votes

Pardonnez-moi si je reçois la syntaxe qui ne va pas, cela fait longtemps que je joue avec Prolog.


Une solution typique consiste à introduire un autre niveau aux clauses, comme ceci: P>

wife(jane, bob).
wife(alice, john).

?- married(jane, X).
X = bob


0 commentaires

1
votes

Si je comprends bien, le problème de base est que si les définitions circulaires sont autorisées, bien que la langue résultante soit cohérente, il peut y avoir des conséquences subtiles qui sont souvent contre-intuitives. Il existe également des considérations d'efficacité (les définitions circulaires incontent des frais généraux supplémentaires).

Voir ce Discussion détaillée pour beaucoup plus d'explications et assez de points de vue différents.


0 commentaires

1
votes

Une solution possible consiste à utiliser le dépôt, voir par exemple Cette réponse .


0 commentaires