У меня проблема с этой функцией lisp.Я хочу создать функцию, которая получает два списка и проверяет, присутствуют ли элементы первого списка (все они) во втором списке, и возвращает True, если это произойдет.
В настоящее время у меня есть следующий код:
(defun ocorre-listas (l1 l2)
(dolist (elem1 l1)
(dolist (elem2 l2)
(if (equal elem1 elem2)
t))))
Это не работает, как ожидалось.Должен ли я попытаться сделать это с помощью простой рекурсии?Я действительно не понимаю, как я могу повторить оба списка в поисках равных элементов.
Я решил попробовать без долистов.Это то, что у меня сейчас, оно все еще не работает.
(defun ocorre-listas (l1 l2)
(cond ((null l1) nil)
((null l2) nil)
((if (/= (first l1)(first l2)) (ocorre-listas l1 (rest l2))))
(t (if (= (first l1) (first l2)) (ocorre-listas (rest l1)(rest l2))))))
Я получаю предупреждение о том, что "t" - неопределенная функция.Кроме того, каждый пример, который я пробую, возвращает ноль.Что я делаю не так?