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**`arg …`¶ - Scheme Procedure:
**list->vector**`l`¶ - C Function:
**scm_vector**`(l)`¶ 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)`¶ 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)`¶ Return a newly allocated vector of

`len`elements. If a second argument is given, then each position is initialized to`fill`. 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:

- Scheme Procedure:
**vector?**`obj`¶ - C Function:
**scm_vector_p**`(obj)`¶ Return

`#t`

if`obj`is a vector, otherwise return`#f`

.

- C Function:
`int`

**scm_is_vector**`(SCM obj)`

¶ Return non-zero when

`obj`is a vector, otherwise return`zero`

.