2012-01-22 55 views
0

我對Prolog進行了一下介紹,這是我第一次嘗試寫它:直接在第一次查詢時出現錯誤。 (在下面我的例子中要求的字( '試驗')。)我的第一個序言小程序不起作用

我的意思是狀態:

  • 字/ 1
  • 別名/ 2
  • 別名是可交換
  • 如果一個變量是另一個的別名那麼它是一個字
  • A,C,和d是字
  • B是A的一個別名

這是我做清單時的知識庫。在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) ? 

任何線索我的knwoledge基地出了什麼問題?

回答

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

這是一個無限循環。

alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
alias(2,4) 
alias(4,2) 
....