Findall с несколькими переменными в Prolog

Я хотел бы получить список решений из правила, которое я создал на Прологе.

Однако предикат findall работает только с одной переменной.

Может ли кто-нибудь предложить, как обойти это очевидное ограничение?

Мое правило

beat(P,M,E)

Что я хочу

L = [[P,M],[P,M],................]

Что я получаю сейчас

L = [P,P,P,P,.........]

or

L = [M,M,M,M,M.............]

person ReiiYuki    schedule 15.10.2016    source источник


Ответы (1)


findall может работать с удивительно гибким количеством вариаций. Я думаю, вы хотите что-то вроде этого:

findall([P,M], beat(P,M,E), L).
person eazar001    schedule 15.10.2016
comment
@ReiiYuki Пожалуйста, отметьте ответ как принятый, если это решение, которое вам нужно, чтобы другие пользователи тоже могли найти этот ответ полезным. - person Yasel; 16.10.2016