Ошибка в коде - Lisp (229425)

Узнай цену своей работы

Формулировка задачи:

код выполняет объед списков. почему то вылетает ошибка. В чем дело? Если можно, пожалуйста, сразу решение
(defun ob(lst1 lst2)
(append lst1 (remove-if (lambda(x) member x lst1))lst2))
 
(ob '(1 2 3 4) '(1 2 4))
> > 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.

Решение задачи: «Ошибка в коде»

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).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5