Lisp の member-if 関数
昨日は member 関数をやったので、今日は似たような member-if 。これを ClozureCL で使おうとすると、
MEMBER-IF : (TEST LIST &KEY KEY)
と、シグネチャが出る。う〜ん、Lisp ではこの関数の定義の様子をなんと言うのだろうか。
member-if は、member と同じように書くとエラーになる。
(member-if 'a (list 'b 'c)) > Error: Undefined function A called with arguments (B) . 〜以下略〜
member-if は、最初に"TEST"に該当する引数がくる。これは、member 関数の例を考えると・・・こういうことだろうか。
(member-if #'numberp '(a b c 3)) (3)
1つ目の引数は、2つ目の引数に対して実行する関数だ。1つ目の関数が T を返した以降の要素がリストとして返される、というのが member-if 関数、というところか。