Мне нужно написать рекурсивную функцию, которая печатает элементы списка дважды.Например, rdouble '(1 2 3) напечатает (1 1 2 2 3 3), а rdouble' (1 (2 3) 4) выведет (1 1 (2 2 3 3) 4 4).
Пока у меня есть:
(defun rdouble(struct)
(cond
((atom struct) struct)
(t (cons (rdouble (car struct)) (cons (car struct)
(rdouble (cdr struct))
)))))
Это отлично работает для первого примера, но печатает
(1 1 (2 2 3 3) (2 3) 4 4)
для второго примера.Как мне продолжить распечатывать каждый элемент дважды, но не перепечатывать (2 3)?Что я делаю не так и как мне это исправить?