如果我有一个数据库,例如:
number(0).
number(1).
number(2).
number(3).
number(4).
number(5).
number(6).
number(7).
number(8).
number(9).
并希望编写谓词数字(L),将L实例化为数字列表。即。
numbers([A,B]).
应该将A和B实例化为10 * 10个不同的数字组合,我该怎么做呢。我想在数字(L)谓词中显示递归,而不是使用maplist。
非常感谢您的协助
答案 0 :(得分:1)
首先,您不应将number/1
用于您的目的,因为它是内置谓词的名称。将number
重命名为num
或其他名称。
产生一对数字的规则很简单:
numbers([A,B]) :- num(A), num(B).
是的,就是这样!
现在您可以打印所有这样的组合:
:- numbers([A,B]), write(A), write('-'), write(B), nl, fail.