满足一元Prolog谓词

时间:2012-01-25 15:14:30

标签: prolog

为了编写满足(P,L)的过程,其返回所有项X的列表L,使得一元谓词P(X)成功。我尝试了以下方法:

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

我是在正确的轨道还是完全离开了?

2 个答案:

答案 0 :(得分:2)

不完全。您使用findall/3走在正确的轨道上,但您无法通过简单地声明P(X)来构建目标。您需要使用=../2构建术语。

答案 1 :(得分:2)

您可以使用内置谓词调用/ 2来执行此操作:

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