これらの関数は、列の中で要素や部分列を検索する(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
が真の場合、この関数は
一番右のマッチする部分列を見つける。