DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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