Pourquoi cela ne fonctionne-t-il pas pour définir "marié" dans prologg? Ces types de prédicats circulaires ne sont-ils pas autorisés? Comment puis-je le réparer? P> merci p> p>
3 Réponses :
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
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). P>
Voir ce Discussion détaillée pour beaucoup plus d'explications et assez de points de vue différents. P>
Une solution possible consiste à utiliser le dépôt, voir par exemple Cette réponse . P>