Если у вас есть какой-либо предикат с несколькими результатами и вы хотите найти все из них, вы должны использовать findall/3
Например, в вашем случае вы можете сделать что-то вроде:
findall([X,Y], match(X,Y),L).
L будет списком, который будет содержать все X, Y, которые удовлетворяют соответствию (X, Y) в формате [X, Y].например, при условии, что:
match(m1,f1).
match(m2,f2).
результат будет L = [[m1, f1], [m2, f2]]
обратите внимание, что вы можете определить формат по своему желаниюНапример, вы могли бы написать:
findall(pair(X,Y), match(X,Y), L).
L = [ pair(m1,f1), pair(m2,f2) ]
findall( X, match(X,Y), L).
L = [ m1, m2]
findall( 42, match(X,Y), L).
L = [42, 42]
, затем вам нужно будет вернуться в список, чтобы распечатать их.
Однако, если вы хотите найти один результат, запустите некоторый код и затем продолжитеВы можете использовать forall / 2:
forall(match(X,Y), my_print(X,Y).