(guile.info.gz) Vector Creation
Info Catalog
(guile.info.gz) Vector Syntax
(guile.info.gz) Vectors
(guile.info.gz) Vector Accessors
22.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)
(As an aside, an interesting implementation detail is that the Guile
reader reads the `#(...)' syntax by reading everything but the initial
`#' as a _list_, and then passing the list that results to
`list->vector'. Notice how neatly this fits with the similarity
between the read (and print) syntaxes for lists and vectors.)
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 k [fill]
-- C Function: scm_make_vector (k, fill)
Return a newly allocated vector of K elements. If a second
argument is given, then each position is initialized to FILL.
Otherwise the initial contents of each position is unspecified.
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'.
Info Catalog
(guile.info.gz) Vector Syntax
(guile.info.gz) Vectors
(guile.info.gz) Vector Accessors
automatically generated byinfo2html