让我有一个谓语p/1
定义,例如,如下:如何获得可能的谓词的列表值
p(2).
p(3).
p(5).
p(7).
我如何定义一个谓词p_list/1
这将是适用于所有可能的列表p/1
(在上述情况下 - [2, 3, 5, 7]
)的值在回溯顺序?
这些值的简单枚举是不可接受的,因为这会使维护变得更加困难。而且值可以被隐含地定义。
让我有一个谓语p/1
定义,例如,如下:如何获得可能的谓词的列表值
p(2).
p(3).
p(5).
p(7).
我如何定义一个谓词p_list/1
这将是适用于所有可能的列表p/1
(在上述情况下 - [2, 3, 5, 7]
)的值在回溯顺序?
这些值的简单枚举是不可接受的,因为这会使维护变得更加困难。而且值可以被隐含地定义。
您可以使用bagof(X, p(X), L)
它给你L = [2,3,5,7]。 “隐含定义”是什么意思?你能给个例子吗。
在最简单的情况下,可以有一个明确列举的谓词'缘/ 2'意味着图的边缘,并且谓词“顶点/ 1”意味着任何事物都出现在边上。可以在不更改谓词本身的定义的情况下更改“顶点”的值。 – citxx
真的需要'maplist'调用吗? 'findall'似乎本身运作良好。 – citxx