subseq creates a sequence
that is a copy of the subsequence of sequence
bounded by start and end.
Start specifies an offset into the original sequence and
marks the beginning position of the subsequence.
end marks the position following the last element of the subsequence.
subseq always allocates a new sequence for a result;
it never shares storage with an old sequence.
The result subsequence is always of the same type as sequence.
If sequence is a vector,
the result is a fresh simple array
of rank one
that has the same actual array element type as sequence.
If sequence is a list,
the result is a fresh list.
setf may be used with subseq to destructively replace
elements of a subsequence with elements
taken from a sequence of new values.
If the subsequence and the new sequence are not of equal length,
the shorter length determines the number of elements that are
replaced. The remaining elements at the end of the longer sequence
are not modified in the operation.