Ошибка в коде - Lisp (229425)
Формулировка задачи:
код выполняет объед списков. почему то вылетает ошибка. В чем дело? Если можно, пожалуйста, сразу решение
> > Error: Required arguments in (REMOVE-IF #'(LAMBDA (X) MEMBER X LST1)) don't match lambda list (FUNCTION CCL::TEST SEQUENCE &REST CCL::KEYS).
> While executing: (:INTERNAL CCL::NX1-COMPILE-LAMBDA), in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: continue compilation ignoring this form
> Type :? for other options.
(defun ob(lst1 lst2) (append lst1 (remove-if (lambda(x) member x lst1))lst2)) (ob '(1 2 3 4) '(1 2 4))
Решение задачи: «Ошибка в коде»
textual
Листинг программы
(defun ob(lst1 lst2) (append lst1 (remove-if (lambda(x) (member x lst1)) lst2))) ==> ob (ob '(1 2 3 4) '(3 4 5 6)) ==> (1 2 3 4 5 6)
Объяснение кода листинга программы
В данном коде определён функционал, который реализует операцию над двумя списками. Функция с именем ob принимает два аргумента типа списков (lst1 и lst2). Оператор defun определяет функцию с именем ob. Функция ob использует операторы append и remove-if. Оператор append соединяет два списка в один. Оператор remove-if удаляет из второго списка (lst2) все элементы, которые присутствуют в первом списке (lst1). В данном коде в качестве аргументов для функции ob используются два списка: '(1 2 3 4) и '(3 4 5 6). Результатом выполнения функции является список (1 2 3 4 5 6).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д