指定した位置の要素を取り除く - 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)))