Функция в COMMON LISP, Emacs
Необходимо реализовать функцию, удаляющую из списка каждый третий элемент, а каждый пятый удваивающую. Посмотрите на мою реализацию в виде двух функций, где одна использует другую:
; Удаление N-го элемента списка
(defun DEL (N LST)
(COND ((EQ N 1) (CDR LST))
(T (CONS (CAR LST) (DEL (- N 1) (CDR LST)) ))))
; Сама функция
(defun func (source)
(dotimes (i (length source))
(if (= 0 (rem i 3)) (DEL i source) )
(if (= 0 (rem i 5)) (setf (aref source i) (* (aref source i) 2)))))
Подскажите, что здесь не так, и как я могу исправить код?