Удалить из первого множества все общие со вторым множеством элементы - LISP
Формулировка задачи:
Помогите, пожалуйста.
Определить функцию Разность, формирующую разность двух множеств, т.е. удаляющую из первого множества все общие со вторым множеством элементы.
Решение задачи: «Удалить из первого множества все общие со вторым множеством элементы - LISP»
textual
Листинг программы
(defun task (s1 s2) (remove-if (lambda x) (member x s2)) s1))
Объяснение кода листинга программы
В коде определена функция с именем task, которая принимает два аргумента типа список (s1 и s2).
- Функция
remove-ifвызывается с тремя аргументами: a. (lambda x) — это анонимная функция, которая принимает один аргумент типаx. b. (member x s2) — это выражение, которое возвращаетистину, если элементxприсутствует во втором спискеs2, иложьв противном случае. c. s1 - это первый список, из которого необходимо удалить общие элементы. - Функция
memberвызывается с двумя аргументами: a. x — это элемент, который проверяется на присутствие во втором списке. b. s2 - это второй список, в котором необходимо проверить наличие элементаx. - Функция
lambdaвызывается с одним аргументом: a. x — это аргумент, который передается в анонимную функцию. - Функция
remove-ifвозвращает новый список, в котором удалены все элементы, для которых анонимная функция возвращаетистину. Таким образом, в коде реализована функцияtask, которая принимает два спискаs1иs2, и возвращает новый списокs1, в котором удалены все общие элементы с вторым спискомs2.