**SUBSEQ**
is also **SETF**
able, but it won’t extend or shrink a sequence; if the new value and the subsequence to be replaced are different lengths, the shorter of the two determines how many characters are actually changed.
If you need to find a subsequence within a sequence, the function works like **POSITION**
except the first argument is a sequence rather than a single item.
It returns **NIL**
if the strings match. **MISMATCH**
also takes many of the standard keyword arguments: a :key
argument for specifying a function to use to extract the values to be compared; a argument to specify the comparison function; and :start1
, :end1
, :start2
, and :end2
arguments to specify subsequences within the two sequences. And a :from-end
argument of specifies the sequences should be searched in reverse order, causing **MISMATCH**
to return the index, in the first sequence, where whatever common suffix the two sequences share begins.