Destructively modifies *sequence-1*
by replacing the *elements* of *subsequence-1*
*bounded* by *start1* and *end1*
with the *elements* of *subsequence-2*
*bounded* by *start2* and *end2*.
*Sequence-1* is destructively modified by copying successive
*elements* into it from *sequence-2*.
*Elements* of the subsequence of *sequence-2*
*bounded* by *start2* and *end2*
are copied into the subsequence of *sequence-1*
*bounded* by *start1* and *end1*.
If these subsequences are not of the same length,
then the shorter length determines how many *elements* are copied;
the extra *elements* near the end of the longer subsequence
are not involved in the operation.
The number of elements copied can be expressed as:

(min (- *end1* *start1*) (- *end2* *start2*))

If *sequence-1* and *sequence-2* are the *same* *object*
and the region being modified overlaps the region being copied
from, then it is as if the entire source region were copied to another
place and only then copied back into the target region.
However, if *sequence-1* and *sequence-2* are not the same,
but the region being modified overlaps the region being copied from
(perhaps because of shared list structure or displaced *arrays*),
then after the **replace** operation
the subsequence of *sequence-1* being modified will have
unpredictable contents.
It is an error if the elements of *sequence-2* are not of a
*type* that can be stored into *sequence-1*.