Прежде всего, чтобы получить список в качестве результата, вам понадобится еще одна переменная в вашем предикате.
Сначала позвольте мне показать вам решение:
find(_,[],_,[]).
find(X,[X|L],N,[N|R]):-
N1 is N+1,
find(X,L,N1,R).
find(X,[_|L],N,R):-
N1 is N+1,
find(X,L,N1,R).
Теперь вам следуетназовите это как:
?- find([c],[[a],[b],[c],[d],[a,a],[b,b],[c]],1,R).
, и вы получите следующий результат:
R = [3, 7]
Я надеюсь, вы понимаете решение. Он сохраняет текущий индекс в N
и возвращает его в R
, если текущий элемент - тот, который вы ищете.