Next: vectors mutate, Previous: vectors list, Up: vectors [Index]
Extended subvector procedure replicating the selected subvector “up and down” index space, in both the positive and negative directions.
The call:
(%xsubvector from to '#(#\a #\b #\c #\d #\e #\f #\g) 3 6)
selects the subvector #(#\d #\e #\f)
and defines the conceptual
bidirectionally–infinite vector:
... e f d e f d e f d e f ... ... -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 ... ^
that is #(#\d #\e #\f)
repeated in both directions.
%xsubvector
returns the subvector of this vector beginning at
index from, and ending at to.
We can use this function to perform a variety of tasks:
(xsubvector '#(#\a #\b #\c) 0 7) ⇒ #(#\a #\b #\c #\a #\b #\c #\a)
(xsubvector '#(#\a #\b #\c #\d #\e #\f) 1 7) ⇒ #(#\b #\c #\d #\e #\f #\a) (xsubvector '#(#\a #\b #\c #\d #\e #\f) 2 8) ⇒ #(#\c #\d #\e #\f #\a #\b) (xsubvector '#(#\a #\b #\c #\d #\e #\f) 3 9) ⇒ #(#\d #\e #\f #\a #\b #\c) (xsubvector '#(#\a #\b #\c #\d #\e #\f) 4 10) ⇒ #(#\e #\f #\a #\b #\c #\d) (xsubvector '#(#\a #\b #\c #\d #\e #\f) 5 11) ⇒ #(#\f #\a #\b #\c #\d #\e)
(xsubvector '#(#\a #\b #\c #\d #\e #\f) -1 5) ⇒ #(#\f #\a #\b #\c #\d #\e) (xsubvector '#(#\a #\b #\c #\d #\e #\f) -2 4) ⇒ #(#\e #\f #\a #\b #\c #\d) (xsubvector '#(#\a #\b #\c #\d #\e #\f) -3 3) ⇒ #(#\d #\e #\f #\a #\b #\c) (xsubvector '#(#\a #\b #\c #\d #\e #\f) -4 2) ⇒ #(#\c #\d #\e #\f #\a #\b) (xsubvector '#(#\a #\b #\c #\d #\e #\f) -5 1) ⇒ #(#\b #\c #\d #\e #\f #\a)
Note that:
It is an error if start equals past.
Exactly the same as %xsubvector
, but the extracted text is
written into the selected subvector of target.
This operation is not defined if (eq? target start)
; we cannot
copy a vector on top of itself.
Next: vectors mutate, Previous: vectors list, Up: vectors [Index]