2012-01-22 6 views
0

J'ai jeté un coup d'oeil à Prolog, et c'est mon premier petit essai à l'écriture: il bogues directement à mes premières requêtes. (Dans l'exemple ci-dessous j'ai demandé mot ('test').)Mon premier programme minuscule prolog ne fonctionne pas

que je voulais dire à l'autre:

  • mot/1
  • alias/2
  • alias
  • est commutative
  • si une variable est un alias de l'autre, alors il est un mot
  • a, C, et D sont des mots
  • B est un alias de A.

C'est la base de connaissances quand je fais une liste. dans la console SWI-Prolog.

?- listing. 
word(A) :- 
    alias(A, B). 
word('A'). 
word('C'). 
word('D'). 

alias(A, B) :- 
     alias(B, A). 
alias('A', 'B'). 

Yes 
3 ?- word('test'). 
ERROR: Out of local stack 
Exception: (59,743) alias(_L147, test) ? 

Qu'est-ce qui ne va pas avec ma base knwoledge?

Répondre

2
alias(A, B) :- 
     alias(B, A). 
alias('A', 'B'). 

Ceci est une boucle infinie. par exemple, si vous appelez alias(2,4) alors la trace serait quelque chose comme:

alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
.... 
Questions connexes