next up previous
Next: 9.10 find-all Up: 9 シーケンスデータ Previous: 9.8 find

9.9 find-all-if

find-all-ifという関数はある条件をみたすデータをすべて探しだすという 関数としてその関数を定義したいと思いますが,これは同じ働きをする関数が すでにあります.それは,remove-if-notという関数です.
<cl> (remove-if-not #'oddp '#(1 2 3 4 5))
#(1 3 5)
remove-if-notと同じ関数定義をfind-all-ifに与えるためには, symbol-functionという関数定義を返す関数を用い,setf によって 関数定義の代入を行ないます.
<cl> (setf (symbol-function 'find-all-if)
           (symbol-function 'remove-if-not))
#<Function REMOVE-IF-NOT @ #x399ca6> 
<cl> (find-all-if 'oddp '(1 2 3 4 5))
(1 3 5) 
<cl> (find-all-if 'oddp '(1 2 3 4 5))
(2 4)


generated through LaTeX2HTML. M.Inaba 平成18年5月7日