2012-01-25 123 views
0

爲了編寫一個程序滿足(P,L)返回所有項X的列表L,使得一元謂詞P(X)成功。我曾嘗試以下內容:滿足一元Prolog謂詞

satisfy(P,L):- findall(X,call(P(X)),L). 

我在正確的軌道上還是完全沒有了?

回答

2

您可以用做內建謂詞調用/ 2:

satisfy(P, L):- findall(X, call(P, X), L). 
2

不完全。您使用findall/3進入正確的軌道,但您無法通過簡單地陳述P(X)構建目標電話。您需要改爲使用=../2來代替。