arrayutils
A few utilities for working with arrays.
ARRAYUTILS

Function
ENSUREARRAYSIZE
(array newspace) 
Function
ARRAYSHIFT
(array &key (n 1) (from 0) to (adjust t) (fill nil fp) (contents nil cp))Shifts a subset of array elements in either direction for a specified amount. Optionally also extends the array and fills empty space with a given element. N  The amount to be moved. If positive, things are shifted to the right. If negative, things are shifted to the left. FROM  The left point of the region to move, inclusive. TO  The right point of the region to move, exclusive. ADJUST  Whether to adjust the fill pointer and the array bounds. The array is only adjusted if N is positive and the range of TO+N would exceed the ARRAY length, or if N is negative and TO equals the length of the ARRAY FILL  If provided, empty spaces created by the move will be filled with this element. CONTENTS  If provided, uses the contents to fill the new space. If N is greater than the length of this sequence, FILL is used to fill the rest of the space if it is provided. If not, an error is signalled. No matter whether N is negative or positive, the content is filled in from left to right in the order it is given. 
Function
VECTORPUSHEXTENDPOSITION
(element vector position)Pushes the element into the specified position and shifts everything to the right to make space. This is potentially very costly as all elements after the given position need to be shifted as per ARRAYSHIFT. 
Function
VECTORPUSHEXTENDFRONT
(element vector)Pushes the element onto the front of the vector and extends if necessary. This operation is very costly and takes O(n) time as each element needs to be shifted as per ARRAYSHIFT. See VECTORPUSHEXTENDPOSITION 
Function
VECTORPOPPOSITION
(vector position)Pops the element at the given position of the vector and returns it. This is potentially very costly as all elements after the given position need to be shifted back as per ARRAYSHIFT. See VECTORPOPPOSITION* 
Function
VECTORPOPPOSITION*
(vector position)Pops the element at the given position of the vector and returns it. This is faster than VECTORPOPPOSITION, but does not preserve the order of elements in the vector. See VECTORPOPPOSITION 
Function
VECTORPOPFRONT
(vector)Pops the first element off the vector and returns it. This operation is very costly and takes O(n) time as each element needs to be shifted as per ARRAYSHIFT. See VECTORPOPFRONT* See VECTORPOPPOSITION 
Function
VECTORPOPFRONT*
(vector)Pops the first element off the vector and returns it. This is faster than VECTORPOPFRONT, but does not preserve the order of elements in the vector. See VECTORPOPFRONT See VECTORPOPPOSITION 
Function
VECTORAPPEND
(vector sequence &optional position)Appends all elements of the sequence at position of the vector and returns it. This is potentially very costly as all elements after the given position need to be shifted back as per ARRAYSHIFT.