Instead of creating a vector implicitly by using the read syntax just
described, you can create a vector dynamically by calling one of the
`vector`

and `list->vector`

primitives with the list of Scheme
values that you want to place into a vector. The size of the vector
thus created is determined implicitly by the number of arguments given.

— Scheme Procedure: **vector**` . l`

— Scheme Procedure:**list->vector**` l`

— C Function:**scm_vector** (`l`)

— Scheme Procedure:

— C Function:

Return a newly allocated vector composed of the given arguments. Analogous to

`list`

.(vector 'a 'b 'c) ⇒ #(a b c)

The inverse operation is `vector->list`

:

— Scheme Procedure: **vector->list**` v`

— C Function:**scm_vector_to_list** (`v`)

— C Function:

Return a newly allocated list composed of the elements of

v.(vector->list '#(dah dah didah)) ⇒ (dah dah didah) (list->vector '(dididit dah)) ⇒ #(dididit dah)

To allocate a vector with an explicitly specified size, use
`make-vector`

. With this primitive you can also specify an initial
value for the vector elements (the same value for all elements, that
is):

— Scheme Procedure: **make-vector**` len `[`fill`]

— C Function:**scm_make_vector** (`len, fill`)

— C Function:

Return a newly allocated vector of

lenelements. If a second argument is given, then each position is initialized tofill. Otherwise the initial contents of each position is unspecified.

— C Function: SCM **scm_c_make_vector** (`size_t k, SCM fill`)

Like

`scm_make_vector`

, but the length is given as a`size_t`

.

To check whether an arbitrary Scheme value *is* a vector, use the
`vector?`

primitive: