2011-03-08 114 views
3

我是Prolog的新手。如何在Prolog中執行此操作?

使用這個基本的「數據庫」的結構,我想我應該能夠查詢數據庫,找出

  • 誰吃的魚?
  • 鯨魚吃什麼?

    eats(Horse, grass). 
    eats(Monkey, banana). 
    eats(Whale, fish). 
    

我想不會更改數據庫設置(如果可能)。我正在使用以下查詢與各自的不想要的結果:

在這裏,我是試圖問'誰吃魚?

?- eats(X, fish). 
true. 

在這裏,我想問, '千萬鯨吃什麼?'

?- eats(Whale,X). 
X = grass ; 
X = banana ; 
X = fish. 

回答

9

您的查詢是正確的,這是您的事實數據庫是錯誤的。原子需要以小寫字母開頭(或引號)。你開始使用大寫字母的馬,猴子,鯨魚,所以它們是變量(並且匹配任何東西)。因此,您當前的數據庫相當於:

eats(X, grass). 
eats(X, banana). 
eats(X, fish). 
相關問題