Next: , Previous: Vector Syntax, Up: Vectors

##### 5.6.3.2 Dynamic Vector Creation and Validation

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)

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`.