Prolog:Return 来自事实的 Y 列表,其中 X = x
Prolog: Return list of Y from facts where X = x
我是 Prolog 的新手,无法解决某个问题。
假设我有几个事实 fact(X,Y):
事实(a,m)。
事实(b,m)。
事实(c,n)。
事实(x,q)。
事实(x,y)。
事实(x,z)。
我想创建一个包含所有 Y 个事实和特定 X 的列表。
例如:
?- getList(x, LIST).
列表 = [q,y,z].
返回 q、y、z,因为它们在 X = x 的事实中找到。
有什么快速的方法吗?我尝试使用递归遍历所有事实(x,Y)并附加每个 Y 但我无法使其工作。
提前致谢!
您应该使用 findall/3 获取您的查询的所有解决方案,并使用您想要的模板收集一个列表。
在你的例子中它应该是:
findall(Y, fact(x, Y), LIST).
我是 Prolog 的新手,无法解决某个问题。
假设我有几个事实 fact(X,Y):
事实(a,m)。
事实(b,m)。
事实(c,n)。
事实(x,q)。
事实(x,y)。
事实(x,z)。
我想创建一个包含所有 Y 个事实和特定 X 的列表。
例如:
?- getList(x, LIST).
列表 = [q,y,z].
返回 q、y、z,因为它们在 X = x 的事实中找到。
有什么快速的方法吗?我尝试使用递归遍历所有事实(x,Y)并附加每个 Y 但我无法使其工作。
提前致谢!
您应该使用 findall/3 获取您的查询的所有解决方案,并使用您想要的模板收集一个列表。
在你的例子中它应该是:
findall(Y, fact(x, Y), LIST).