Функция POSSESSING и UNION - Lisp
Формулировка задачи:
(defun Union (L1 L2) (cond ((null L1) L2) ((member (car L1) L2) (Union (cdr L1) L2)) (T (cons (car L1) (Union (cdr L1) L2)))))
Решение задачи: «Функция POSSESSING и UNION»
(defun possessing (l f) (remove-if-not #'(lambda (x) (funcall f x)) l)) (possessing '(1 2 3 4 5 6 7 8) 'evenp) ==> (2 4 6 8)
Объяснение кода листинга программы
В данном коде реализована функция POSSESSING, которая принимает два аргумента: список l и предикат f. Предикат f указывает на условие, которому должны удовлетворять элементы списка l.
В данном примере предикат f представлен функцией evenp, которая возвращает T, если число четное, и NIL, если число нечетное.
Функция POSSESSING использует функцию remove-if-not, чтобы отфильтровать список l и оставить только те элементы, которые удовлетворяют предикату f. Результатом работы функции является отфильтрованный список.
В данном примере список l содержит числа от 1 до 8, а предикат f указывает на четность чисел. Поэтому результатом работы функции POSSESSING будет список (2 4 6 8), так как только эти числа из списка l являются четными.