User Tools

A PCRE internal error occured. This might be caused by a faulty plugin

====== Function MISMATCH ====== ====Syntax==== * **mismatch** //sequence-1// //sequence-2// ''&key'' //from-end// //test// //test-not// //key// //start1// //start2// //end1// //end2// → //position// ====Arguments and Values==== * //sequence-1// - a //[[CL:Glossary:sequence]]//. * //sequence-2// - a //[[CL:Glossary:sequence]]//. * //from-end// - a //[[CL:Glossary:generalized boolean]]//. The default is //[[CL:Glossary:false]]//. * //test// - a //[[CL:Glossary:designator]]// for a //[[CL:Glossary:function]]// of two //[[CL:Glossary:argument|arguments]]// that returns a //[[CL:Glossary:generalized boolean]]//. * //test-not// - a //[[CL:Glossary:designator]]// for a //[[CL:Glossary:function]]// of two //[[CL:Glossary:argument|arguments]]// that returns a //[[CL:Glossary:generalized boolean]]//. * //key// - a //[[CL:Glossary:designator]]// for a //[[CL:Glossary:function]]// of one argument, or **[[CL:Constant Variables:nil]]**. * //start1//, //end1// - //[[CL:Glossary:bounding index designator|bounding index designators]]// of //sequence-1//. The defaults for //start1// and //end1// are ''0'' and **[[CL:Constant Variables:nil]]**, respectively. * //start2//, //end2// - //[[CL:Glossary:bounding index designator|bounding index designators]]// of //sequence-2//. The defaults for //start2// and //end2// are ''0'' and **[[CL:Constant Variables:nil]]**, respectively. * //position// - a //[[CL:Glossary:bounding index]]// of //sequence-2//, or **[[CL:Constant Variables:nil]]**. ====Description==== The specified subsequences of //sequence-1// and //sequence-2// are compared element-wise. The //key// argument is used for both the //sequence-1// and the //sequence-2//. If //sequence-1// and //sequence-2// are of equal length and match in every element, the result is //[[CL:Glossary:false]]//. Otherwise, the result is a non-negative //[[CL:Glossary:integer]]//, the index within //sequence-1// of the leftmost or rightmost position, depending on //from-end//, at which the two subsequences fail to match. If one subsequence is shorter than and a matching prefix of the other, the result is the index relative to //sequence-1// beyond the last position tested. If //from-end// is //[[CL:Glossary:true]]//, then one plus the index of the rightmost position in which the //sequences// differ is returned. In effect, the subsequences are aligned at their right-hand ends; then, the last elements are compared, the penultimate elements, and so on. The index returned is an index relative to //sequence-1//. ====Examples==== <blockquote> (mismatch "abcd" "ABCDE" :test #'[[CL:Functions:char-equal]]) <r>4 </r> (mismatch '(3 2 1 1 2 3) '(1 2 3) :from-end [[CL:Constant Variables:t]]) <r>3 </r> (mismatch '(1 2 3) '(2 3 4) :test-not #'[[CL:Functions:eq]] :key #'[[CL:Functions:oddp]]) <r>[[CL:Constant Variables:NIL]] </r> (mismatch '(1 2 3 4 5 6) '(3 4 5 6 7) :start1 2 :end2 4) <r>[[CL:Constant Variables:NIL]] </r> </blockquote> ====Side Effects==== None. ====Affected By==== None. ====Exceptional Situations==== None. ====See Also==== * {\secref\TraversalRules} ====Notes==== The **'':test-not''** //[[CL:Glossary:argument]]// is deprecated. \issue{SUBSEQ-OUT-OF-BOUNDS} \issue{RANGE-OF-START-AND-END-PARAMETERS:INTEGER-AND-INTEGER-NIL} \issue{MAPPING-DESTRUCTIVE-INTERACTION:EXPLICITLY-VAGUE} \issue{TEST-NOT-IF-NOT:FLUSH-ALL}