Определите функцию, зависящую от одного аргумента, которая по данному списку формирует список его элементов - Lisp
Формулировка задачи:
Задача:
Определите функцию, зависящую от одного аргумента, которая по данному списку формирует список его элементов, встречающихся в нем более одного раза. Задача вроде простенькая, изначально сделал через if, это не устроило. Сказали не использовать if, lambda. Прошу помощи, по другому не представляю написание задачки. Мало-ли, вдруг нужен первоначальный код. Заранее, благодарю за помощь.(defun F (L &optional acc)
(if L
((lambda (head tail)
(F
tail
(if (member head acc) acc
(if (member head tail)
(cons head acc)
acc))))
(car L)
(cdr L))
(reverse acc)))Решение задачи: «Определите функцию, зависящую от одного аргумента, которая по данному списку формирует список его элементов»
textual
Листинг программы
(defn f (l) (defn go (l r) (def h (car l) t (cdr l)) (cond (null? l) r (and (elem h t) (not (elem h r))) (go t (cons h r)) (go t r))) (go (flatten l) nil)) (printLn (f '(1 1 2 2 (3 2 2 4 5 5) 6 7 8))) ........ (5 2 1)