From: Wade Humeniuk
Subject: delete and adjustable arrays
Date: 
Message-ID: <_VUgc.51539$aD.5119@edtnps89>
 From my reading of the CLHS it seems portable to create
an adjustable array (with a fill pointer) and expect:

1) I can add elements to the array with vector-push-extend
2) delete elements with a simple call to DELETE.
3) the array will always be adjustable and have a fill-pointer.

Is this correct?

Example:

BPROTO 21 > (setf arr (make-array 16 :fill-pointer 0 :adjustable t))
#()

BPROTO 22 > (vector-push-extend 10 arr)
0

BPROTO 23 > (vector-push-extend 20 arr)
1

BPROTO 24 > (vector-push-extend 30 arr)
2

BPROTO 25 > (vector-push-extend 40 arr)
3

BPROTO 26 > arr
#(10 20 30 40)

BPROTO 27 > (delete 30 arr)
#(10 20 40)

BPROTO 28 > (fill-pointer arr)
3

BPROTO 29 > (delete 10 arr)
#(20 40)

BPROTO 30 > (vector-push-extend 10 arr)
2

BPROTO 31 > arr
#(20 40 10)

In this case no matter how many calls to vector-push-extend and delete, arr will
always remain an adjustable array with a fill-pointer.  From my
reading of the CLHS I should expect this and it will be portable across
implementations.  Yeah!

Wade