Функция в 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)))))

Подскажите, что здесь не так, и как я могу исправить код?


Ответы (0 шт):