substring-move-left!

[procedure] substring-move-right! s1 m1 n1 s2 m2

[procedure] substring-move-left! s1 m1 n1 s2 m2

RRRS: s1 and s2 must be strings, m1 and n1 must be valid indices of s1 with m1 <= n1 and m2 must be a valid index of s2. These procedures store the elements m1 through n1 of s1 into the string s2 starting at element m2 and return an unspecified value.

The procedures differ only when (eq? s1 s2) and the substring being moved overlaps the substring being replaced. In this case, substring-move-right! copies serially, starting with the rightmost element and proceeding to the left, while substring-move-left! begins with the leftmost element and proceeds to the right.