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

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

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

Кто-нибудь может подсказать, как обойти это очевидное ограничение?

Мое правило

beat(P,M,E)

Что я хочу

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

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

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

или же

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

1 ответ

Решение

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

findall([P,M], beat(P,M,E), L).
Другие вопросы по тегам