Мне нужен предикат, который просматривает список списков и проверяет, проверяет ли каждый из этих списков определенные условия; в случае, если список проверяет условия, он добавляется в ResultList (другой список списков). Я написал это:
mypredicate(ListOfLists, ReferenceList, ResultList) :-
mypredicate(ListOfLists, ReferenceList, ResultList, []),
mypredicate([H|T], ReferenceList, ResultList, Acc) :-
elementos_comuns(ReferenceList, H),
H \== ReferenceList,
append(Acc, H, ResultList),
T \== [],
mypredicate(T, ReferenceList, ResultList, ResultList).
Я только хочу добавить, если обе строки выше "append" возвращают true, и независимо от того, что происходит в первых 3 строках, я хочу, чтобы он запускал последнюю строку, если T \ == [].
Проблема в том, что когда он достигает элемента ListOfLists, который не проверяет один из этих двух:
elementos_comuns(ReferenceList, H),
H \== ReferenceList,
, все возвращается false.
Мне нужно, чтобы ResultList был списком списков, который содержит списки из "ListOfList", которые проверяют
elementos_comuns(ReferenceList, H),
H \== ReferenceList,
Я понятия не имею, как это сделать, любая помощь приветствуется.