`vector-length`

and `vector-ref`

return information about a
given vector, respectively its size and the elements that are contained
in the vector.

— Scheme Procedure: **vector-length**` vector`

— C Function:**scm_vector_length**` vector`

— C Function:

Return the number of elements in

vectoras an exact integer.

— C Function: size_t **scm_c_vector_length** (`SCM v`)

Return the number of elements in

vectoras a`size_t`

.

— Scheme Procedure: **vector-ref**` vector k`

— C Function:**scm_vector_ref**` vector k`

— C Function:

Return the contents of position

kofvector.kmust be a valid index ofvector.(vector-ref '#(1 1 2 3 5 8 13 21) 5) ⇒ 8 (vector-ref '#(1 1 2 3 5 8 13 21) (let ((i (round (* 2 (acos -1))))) (if (inexact? i) (inexact->exact i) i))) ⇒ 13

— C Function: SCM **scm_c_vector_ref** (`SCM v, size_t k`)

Return the contents of position

k(a`size_t`

) ofvector.

A vector created by one of the dynamic vector constructor procedures (see Vector Creation) can be modified using the following procedures.

*NOTE:* According to R5RS, it is an error to use any of these
procedures on a literally read vector, because such vectors should be
considered as constants. Currently, however, Guile does not detect this
error.

— Scheme Procedure: **vector-set!**` vector k obj`

— C Function:**scm_vector_set_x**` vector k obj`

— C Function:

Store

objin positionkofvector.kmust be a valid index ofvector. The value returned by ‘vector-set!’ is unspecified.(let ((vec (vector 0 '(2 2 2 2) "Anna"))) (vector-set! vec 1 '("Sue" "Sue")) vec) ⇒ #(0 ("Sue" "Sue") "Anna")

— C Function: void **scm_c_vector_set_x** (`SCM v, size_t k, SCM obj`)

Store

objin positionk(a`size_t`

) ofv.

— Scheme Procedure: **vector-fill!**` v fill`

— C Function:**scm_vector_fill_x** (`v, fill`)

— C Function:

Store

fillin every position ofvector. The value returned by`vector-fill!`

is unspecified.

— Scheme Procedure: **vector-move-left!**` vec1 start1 end1 vec2 start2`

— C Function:**scm_vector_move_left_x** (`vec1, start1, end1, vec2, start2`)

— C Function:

Copy elements from

vec1, positionsstart1toend1, tovec2starting at positionstart2.start1andstart2are inclusive indices;end1is exclusive.

`vector-move-left!`

copies elements in leftmost order. Therefore, in the case wherevec1andvec2refer to the same vector,`vector-move-left!`

is usually appropriate whenstart1is greater thanstart2.

— Scheme Procedure: **vector-move-right!**` vec1 start1 end1 vec2 start2`

— C Function:**scm_vector_move_right_x** (`vec1, start1, end1, vec2, start2`)

— C Function:

Copy elements from

vec1, positionsstart1toend1, tovec2starting at positionstart2.start1andstart2are inclusive indices;end1is exclusive.

`vector-move-right!`

copies elements in rightmost order. Therefore, in the case wherevec1andvec2refer to the same vector,`vector-move-right!`

is usually appropriate whenstart1is less thanstart2.