指定した位置の要素を取り除く - lisp-cookbook-ja/common-lisp GitHub Wiki

配列

指定した位置の要素を取り除く

RubyのArray#delete_atメソッドのようなものはANSI CLの標準には含まれていませんが、下記のようなものが考えられるでしょう。

(defun remove-at (pos seq)
  (remove-if (constantly T) seq :start pos :count 1))

(let ((a (vector 5 1 4 2 3)))
  (remove-at 0 (remove-at 0 a)))
;=> #(4 2 3)

;; ↑改善案を参考にしました↓ remove-at別解

(defun remove-at (pos seq)
  (remove nil seq :start pos :count 1 :test (constantly T)))

;; 破壊的変更版
(defun delete-at (pos seq)
  (delete nil seq :start pos :count 1 :test (constantly T)))