まず第一に、私は LispWorks を使っています。位置 i < フィル ポインターに要素を挿入する調整可能な配列があるため、すべての要素を i からその位置 + 1 に移動する必要があります。私の問題は、その方法がわからず、結果として調整可能な配列が得られますが、すべての要素を別の配列にコピーする必要はありません。パフォーマンスは本当に重要です。この配列 #(0 1 2 3 4 6 7) を使用して、位置 i=5 に番号 5 を挿入する方法:
(let ((arr (make-array 7 :initial-contents (list 0 1 2 3 4 6 7)
:adjustable T :fill-pointer 7))
(i 5))
(concatenate 'vector (subseq arr 0 i)
(make-array 1 :initial-contents '(5))
(subseq arr i (fill-pointer arr))))
LispWorks がすべての要素を結果の配列に内部的にコピーしているかどうかはわかりませんが、目的の配列が得られますが、調整はできず、フィルポインターもありません。何かアイデア?