これらの関数は、列の中で要素や部分列を検索する(member*や
assoc*も参照; see リスト)。
この関数は、itemとマッチする要素を見つけるためにseqを検索
する。マッチが見つかった場合、マッチした要素を戻す。そうでなければ、
nilを戻す。:from-endが真でない場合、一番左のマッチを戻す。
:from-endが真の場合、一番右のマッチを戻す。:startや
:end引数は、検索される要素の範囲を制限するために使用してもよい。
この関数はfindと似ているが、項目自身ではなく、マッチする項目の
列の中の位置を示す整数を戻す点が異なる。:startが0でない
場合でさえ、位置は全体として列の開始から相対である。マッチする要素が
見つからない場合、この関数はnilを返す。
この関数は、itemとマッチするseqの要素の数を戻す。結果は 常に負ではない整数である。
find-ifやfind-if-not、position-if、
position-if-not、count-if、count-if-notは同様に
定義される。
この関数は、seq1とseq2の指定された部分を比較する。それらが
同じ長さで、対応する要素が(:testや:test-not、:key
に従って)マッチする場合、この関数はnilを戻す。ミスマッチがある
場合、この関数は第1のミスマッチ要素の(seq1に相対な)インデクスを
戻す。これは、マッチしない一番左の要素のペアか、2つの非マッチ列の短い
方が尽きた場所である。
:from-endが真の場合、要素は(1- end1)と
(1- end2)から始まり右から左へ比較される。列が異なる場合、
一番右の(seq1に相対な)相違のインデクスに1を加えた値が戻される。
興味深い例は(mismatch str1 str2 :key 'upcase)であり、これは
大文字小文字を区別せずに2つの文字列を比較する。
この関数は、seq1(あるいは:start1や:end1で
指定された部分)とマッチする部分列を見つけるためにseq2を
検索する。:start2や:end2で定義される領域内に完全に入る
マッチのみが考慮される。戻り値は、seq2の開始に相対な一番左
マッチの一番左の要素のインデクスか、マッチが見つからない場合は
nilである。:from-endが真の場合、この関数は
一番右のマッチする部分列を見つける。