Я пытаюсь создать альтернативу findall
в Прологе.Альтернатива findall
Что у меня есть:
solutions(A,T,S) :-
T,
assert(temp(A)),
fail.
solutions(A,T,S) :-
obtain([],S).
obtain(X,S) :-
retract(temp(A)),
obtain([A|X],S).
obtain(S,S).
Это, однако, дает мне противоречивые результаты. Что не так? Заранее спасибо.
Можете ли вы описать, что является * непоследовательным * в ваших результатах? – lurker
Возможно, использование 'assertz' вместо' assert' решит эту загадочную несогласованность. –
@EugeneSh. Я считаю, что 'assert' и' assertz' делают то же самое. :) – lurker