Next: Vector Accessors, Previous: Vector Syntax, Up: Vectors [Contents][Index]

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`

.

Next: Vector Accessors, Previous: Vector Syntax, Up: Vectors [Contents][Index]