Actually, it should read like this --
(defun RemoveNth ( n lst / len foo i )
(defun foo (x)
(if (eq n (setq i (1+ i)))
(defun foo (x) nil)
)
)
(cond
( (zerop n) (cdr lst))
( (eq n (1- (setq len (length lst))))
(reverse (cdr (reverse lst)))
)
( (< (setq i -1) n len)
(vl-remove-if 'foo lst)
)
( lst )
)
)
There is still at least one level of optimization that can be done in my mind. Any takers?