ADJUST-ARRAY-FILL-POINTERADJUST-ARRAY on the fill pointer.:FILL-POINTER keyword argument to ADJUST-ARRAY is treated as follows...
If :FILL-POINTER argument is not given, then the fill-pointer of the array to be adjusted (if any) is left alone. It is an error to adjust an array to a size smaller than its fill pointer without specifying the :FILL-POINTER option so that its fill-pointer is properly adjusted in the process.
If supplied, the :FILL-POINTER argument must be either an integer between 0 and the new size of the array, the symbol T (indicating that the new size of the array should be used), or the symbol NIL (indicating that the fill pointer should left as it is -- as if the :FILL-POINTER option had not been specified).
An error is signalled if a non-NIL value for :FILL-POINTER is supplied and the array to be adjusted does not already have a fill pointer.
(SETQ A1 (MAKE-ARRAY 5 :FILL-POINTER 3 :ADJUSTABLE T)) (SETQ A2 (ADJUST-ARRAY A1 4)) (FILL-POINTER A1) => 3 (FILL-POINTER A2) => 3
(SETQ B1 (MAKE-ARRAY 5 :FILL-POINTER 3 :ADJUSTABLE T)) (SETQ B2 (ADJUST-ARRAY B1 2 :FILL-POINTER 1)) (FILL-POINTER B1) => 1 (FILL-POINTER B2) => 1
(SETQ C1 (MAKE-ARRAY 5 :FILL-POINTER 3 :ADJUSTABLE T)) (SETQ C2 (ADJUST-ARRAY C1 2 :FILL-POINTER T)) (FILL-POINTER C1) => 2 (FILL-POINTER C2) => 2
(SETQ D1 (MAKE-ARRAY 5 :ADJUSTABLE T)) (SETQ D2 (ADJUST-ARRAY D1 2 :FILL-POINTER 2)) signals an error.
(SETQ E1 (MAKE-ARRAY 5 :FILL-POINTER T :ADJUSTABLE T)) (SETQ E2 (ADJUST-ARRAY E1 4)) is an error.
SETF (FILL-POINTER E2) ...)ADJUST-ARRAY and fill-pointers would continue to be hazy, and portable programs would not be able to rely upon that behavior being consistent across implementations.The cleanup committee didn't object.