+Vectors in The Racket Guide introduces vectors.
A vector is a fixed-length array with constant-time access and update of the vector slots, which are numbered from 0 to one less than the number of slots in the vector.
Two vectors are equal? if they have the same length, and if the values in corresponding slots of the vectors are equal? .
A vector can be mutable or immutable. When an immutable vector is provided to a procedure like vector-set! , the exn:fail:contract exception is raised. Vectors generated by the default reader (see Reading Strings) are immutable. Use immutable? to check whether a vector is immutable.
A vector can be used as a single-valued sequence (see Sequences). The elements of the vector serve as elements of the sequence. See also in-vector .
A literal or printed vector starts with #(, optionally with a number between the # and (. See Reading Vectors for information on read ing vectors and Printing Vectors for information on print ing vectors.
See also immutable-vector? and mutable-vector? .
procedure
(make-vector size[v])→vector?
'#(2 2 2)
> v'#(#&3 #&3 #&3 #&3 #&3)
> v'#(#&7 #&7 #&7 #&7 #&7)
This function takes time proportional to size.
procedure
v:any/c
procedure
vec:vector?
This function takes constant time.
procedure
(vector-ref vecpos)→any/c
vec:vector?
This function takes constant time.
procedure
(vector-set! vecposv)→void?
v:any/c
This function takes constant time.
procedure
procedure
(vector*-ref vecpos)→any/c
procedure
(vector*-set! vecposv)→void?
v:any/c
Added in version 6.90.0.15 of package base.
procedure
(vector-cas! vecposold-vnew-v)→boolean?
old-v:any/cnew-v:any/c
Added in version 6.11.0.2 of package base.
procedure
(vector->list vec)→list?
vec:vector?
This function takes time proportional to the size of vec.
procedure
(list->vector lst)→vector?
lst:list?
This function takes time proportional to the length of lst.
procedure
(vector->immutable-vector vec)→(and/c vector? immutable? )
vec:vector?
This function takes time proportional to the size of vec when vec is mutable.
procedure
(vector-fill! vecv)→void?
v:any/c
This function takes time proportional to the size of vec.
procedure
dest-startsrc[ src-startdest-start:exact-nonnegative-integer?src:vector?
This function takes time proportional to (- src-endsrc-start).
> v'#(l p p l y)
procedure
(vector->values vec[start-posend-pos])→any
vec:vector?
This function takes time proportional to the size of vec.
procedure
( build-vector nproc)→vector?
'#(1 2 3 4 5)
procedure
( vector-empty? v)→boolean?
v:vector?
Added in version 7.4.0.4 of package base.
procedure
( vector-set*! vecposv......)→void?
v:any/c
procedure
( vector-map procvec...+)→vector?
proc:procedure?vec:vector?
'#(4 6)
procedure
( vector-map! procvec...+)→vector?
proc:procedure?
'#(2 3 4 5)
> v'#(2 3 4 5)
procedure
( vector-append vec...)→vector?
vec:vector?
'#(1 2 3 4)
procedure
( vector-take vecpos)→vector?
vec:vector?
'#(1 2)
procedure
( vector-take-right vecpos)→vector?
vec:vector?
'#(3 4)
procedure
( vector-drop vecpos)→vector?
vec:vector?
'#(3 4)
procedure
( vector-drop-right vecpos)→vector?
vec:vector?
'#(1 2 3)
'#(1)
procedure
vec:vector?
(values (vector-take vecpos)(vector-drop vecpos))
except that it can be faster.
'#(1 2)
'#(3 4 5)
procedure
vec:vector?
(values (vector-take-right vecpos)(vector-drop-right vecpos))
except that it can be faster.
'#(1 2 3)
'#(4 5)
procedure
( vector-copy vec[startend])→vector?
vec:vector?
'#(1 2 3 4)
'#(4)
'#(3)
procedure
( vector-set/copy vecposval)→vector?
vec:vector?val:any/c
'#(x 2 3)
'#(1 2 x)
Added in version 8.11.1.10 of package base.
procedure
( vector-extend vecnew-size[val])→vector?
vec:vector?
'#(1 2 3 0 0 0 0 0 0 0)
'#(1 2 3 #f #f #f #f #f #f #f)
'#(1 2 3)
Added in version 8.12.0.10 of package base.
procedure
( vector-filter predvec)→vector?
pred:procedure?vec:vector?
'#(2 4 6)
procedure
( vector-filter-not predvec)→vector?
pred:procedure?vec:vector?
'#(1 3 5)
procedure
( vector-count procvec...+)→exact-nonnegative-integer?
proc:procedure?vec:vector?
2
1
'(1 banana)
'(1 banana)
'(3 pears)
'(3 pears)
procedure
( vector-member vvec[is-equal?])→(or/c natural-number/c #f)
v:any/cvec:vector?
1
#f
0
Changed in version 8.15.0.1 of package base: Added the is-equal? argument.
procedure
( vector-memv vvec)→(or/c natural-number/c #f)
v:any/cvec:vector?
1
#f
procedure
( vector-memq vvec)→(or/c natural-number/c #f)
v:any/cvec:vector?
1
#f
procedure
less-than?[ startend#:keykeyvec:vector?
If end is #f, it is replaced with (vector-length vec).
> v1'#(4 3 2 1)
'#(1 2 3 4)
> v1'#(4 3 2 1)
'#(1 2)
> v1'#(4 3 2 1)
> v2'#((4) (3) (2) (1))
'#((2) (3))
> v2'#((4) (3) (2) (1))
Added in version 6.6.0.5 of package base.
procedure
less-than?[ startend#:keykey
> v1'#(4 3 2 1)
> v1'#(1 2 3 4)
> v2'#(4 3 2 1)
> v2'#(4 3 1 2)
> v3'#((4) (3) (2) (1))
> v3'#((4) (2) (3) (1))
Added in version 6.6.0.5 of package base.
procedure
( vector*-copy vec[startend])→vector?
procedure
( vector*-append vec...)→vector?
procedure
( vector*-set/copy vecposval)→vector?
val:any/cprocedure
( vector*-extend vecpos[val])→vector?
Added in version 8.11.1.10 of package base.
Changed in version 8.12.0.10: Added vector*-extend .