Я могу легко написать предикат, чтобы получить уникальные элементы из данного списка в Prolog, например.Пролог: Получение уникальных атомов из формул предложений
no_doubles([], []).
no_doubles([H|T], F) :-
member(H, T),
no_doubles(T, F).
no_doubles([H|T], [H|F]) :-
\+ member(H, T),
no_doubles(T, F).
Однако, как вы можете сделать то же самое, но для чего-то другого, чем обычный список, т.е. не что-то вроде [а, Ь, с ...]? Поэтому в моем случае я хочу извлечь уникальные атомы для пропозициональной формулы, например. unique_atoms (и (х, и (х, у), г), [х, у, г]). выполняется. Вы используете рекурсию так же, как в моем примере no_doubles, но для такой формулы?
Любые идеи приветствуются :). Благодарю.
Спасибо larsmans, ваш предикат get_atoms дал мне приблизительное представление о том, что я должен делать, и я решил проблему сейчас, поэтому спасибо :). Я также посмотрю на ссылку, которую вы разместили. – ale