next up previous
Next: 11.5 関数を返す関数の例:complement Up: 11 関数をデータとして扱う関数の例 Previous: 11.3 :test, :keyキーワード

11.4 関数を返す関数の例:is

関数(述語)を返す関数の例として, あるデータとの等しさを調べるための述語関数を返す関数としてisというのを 定義するとfindは以下のように定義できます.
<cl> (defun is (x) #'(lambda (y) (eq x y)))
IS 
<cl> (find-if (is 2) '(1 2 3 4 5) )
2
(is 2)というのは2に等しいかどうかを調べる述語を返すわけです. このようにパラメタによって定義を変えたい関数の場合には関数を返す 関数を用いると簡潔な記述が可能となります. このisを用いれば,findというのは,
<cl> (defun my-find (y data) (find-if (is y) data))
MY-FIND 
<cl> (my-find 'a '(a b c))
A
と表すことができます.

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