simple-array
simple-array, 2.15.0 20array, t
Per Symbolics comments, this is reworded to clarify that this only defines
things that might be simple, not what must be:
An \term{array}
that is not displaced to another \term{array}, has no \term{fill pointer},
and is not to have its size adjusted dynamically after
creation is a \term{simple array}.The type of an array that is not displaced to another array, has no fill pointer, and is \reviewer{Barrett: Reexamine in light of ADJUST-ARRAY-NOT-ADJUSTABLE--specifically,
all arrays are now valid to adjust-array--they just don't all get changed by side-effect.}not expressly adjustable is a subtype of type simple-array. The concept of a simple array exists to allow the implementation to use a specialized representation and to allow the user to declare that certain values will always be simple arrays.
2.15.0 21The types simple-vector, simple-string, and simple-bit-vector are disjoint subtypes of type simple-array, for they respectively mean (simple-array t (*)), the union of all (simple-array c (*)) for any c being a subtype of type character, and (simple-array bit (*)).
Specializing.
4.5.0 8
simple-array [{element-type | *} [dimension-spec]]
dimension—a valid array dimension.
element-type—a type specifier.
rank—a non-negative fixnum.
This compound type specifier is treated exactly as the corresponding compound type specifier for type array would be treated, except that the set is further constrained to include only simple arrays.
This denotes the set of \term{simple arrays} whose elements are all of \term{type} \issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING} {\penalty-50}\f{(upgraded-array-element-type \param{element-type})} The following will be left out: \param{element-type} \endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING} and whose dimensions are \param{dimensions}. \param{Element-type} must be a valid \term{type specifier} or \misc{*}. \issue{ARRAY-DIMENSION-LIMIT-IMPLICATIONS:ALL-FIXNUM} \param{Dimensions} must be a non-negative \term{fixnum}, \endissue{ARRAY-DIMENSION-LIMIT-IMPLICATIONS:ALL-FIXNUM} which is the number of dimensions, or a \term{list} of \term{valid array dimensions} representing the length of each dimension (any dimension can be \misc{*} instead), or it can be \misc{*}.
It is implementation-dependent whether displaced arrays, vectors with fill pointers, or arrays that are actually adjustable are simple arrays.
(simple-array *) refers to all simple arrays regardless of element type, (simple-array type-specifier) refers only to those simple arrays that can result from giving type-specifier as the :element-type argument to make-array.