Я пытаюсь написать функцию, которая работает как remove-duplicates, но вместо этого она принимает два списка в качестве входных данных: первый указывает символы, для которых дублирование не разрешено, а второй - список различных атомов, который долженбыть сокращенным.
В настоящее время у меня есть это:
(defun like-remove-duplicates (lst1 lst2)
(if(member (first lst1) lst2)
(remove-if #'(lambda (a b)
(equals a b))lst1 lst2)))
Я знаю, что это не совсем близко, но я не могу понять, что мне нужно сделать для выполнения этой функции.Я знаю, что по сути нужно проверить, находится ли первый элемент в списке list1 в list2, и если это так, удалить его дубликаты (но оставить один), а затем перейти к следующему элементу в первом списке.Я предполагал рекурсию, но она не удалась.Я пытался исследовать, но безрезультатно.
Любая помощь?