2017-03-24 62 views
0

我對prolog非常陌生,一邊學習一邊我偶然發現了一個問題。我基本上有一些數據庫的事實。它們是:通過列表檢查的Prolog查詢

book(year(1937), title([of,mice,and,men]), rating_out_of_ten(9)). 
book(year(2008), title([the,hunger,games]), rating_out_of_ten(8)). 

我正試圖查詢標題中包含「of」字樣的圖書。這是我想要的:

book(year, title, rating_out_of_ten), member(of, title). 

當我這樣做時它返回false。有人可以請幫助。提前致謝。

回答

2

所以即時通訊新的序言太多,但我想我知道了解決方案:

  1. 在你查詢你實際使用的是錯誤的斷言,應該是「書」,而不是「電影」

  2. 查詢應該是這樣的:

book(X,title(Y),Z), member(of,Y)

參數必須大寫(他們必須是變量),然而到達你必須使用列表的名稱的變量列表中的元素,然後,像這樣:

title(Y) 

所以你可以使用' Y'在成員謂詞中。

+0

哈哈電影的事情是有點筆誤我會解決它。謝謝! – jim

2

請記住,變量名稱必須以大寫字母(或下劃線)開頭。另外,當你的事實是book時,你真的在​​movie查詢嗎?

你可以嘗試:

?- book(year(Y), title(T), rating_out_of_ten(R)), member(of, T). 
+0

是的,抱歉,這是一個錯字..謝謝! – jim