**Class Precedence List:**

**Description:**

Any one-dimensional *array* is a *vector*.

The *type* **vector** is a *subtype* of *type* **array**; for all *types* `x`, `(vector x)` is the same as `(array x (*))`.

The *type* `(vector t)`, the *type* **string**, and the *type* **bit-vector** are *disjoint* *subtypes* of *type* **vector**.

**Compound Type Specifier Kind:**

Specializing.

**Compound Type Specifier Syntax:**

**vector** *[{element-type | *} [{size | *}]]*

**Compound Type Specifier Arguments:**

*size*---a non-negative *fixnum*.

*element-type*---a *type specifier*.

**Compound Type Specifier Description:**

This denotes the set of specialized *vectors* whose *element type* and *dimension* match the specified values. Specifically:

If *element-type* is the *symbol* *****, *vectors* are not excluded on the basis of their *element type*. Otherwise, only those *vectors* are included whose *actual array element type* is the result of *upgrading* *element-type*; see Section 15.1.2.1 (Array Upgrading).

If a *size* is specified, the set includes only those *vectors* whose only *dimension* is *size*. If the *symbol* ***** is specified instead of a *size*, the set is not restricted on the basis of *dimension*.

**See Also:**

Section 15.1.2.2 (Required Kinds of Specialized Arrays), Section 2.4.8.3 (Sharpsign Left-Parenthesis), Section 22.1.3.7 (Printing Other Vectors), Section 2.4.8.12 (Sharpsign A)

**Notes:**

The *type* `(vector `*e*` `*s*`)` is equivalent to the *type* `(array `*e*` (`*s*`))`.

The type `(vector bit)` has the name **bit-vector**.

The union of all *types* `(vector C)`, where C is any *subtype* of **character**, has the name **string**.

`(vector *)` refers to all *vectors* regardless of element type, `(vector `*type-specifier*`)` refers only to those *vectors* that can result from giving *type-specifier* as the `:element-type` argument to **make-array**.

The following X3J13 cleanup issues,