2016-12-20 2 views
1

リストとリストのリストでメンバー関数がどのように機能するかを理解しようとしています。
ここに例を示します。Common Lispで複数レベルのリストを持つメンバー関数

(member '(A 6) '((A 7) (B 6) (E 6) (D 5)) :test #'string-equal :key #'second) 

私は、リスト「(6)の第2引数は入力中に第二のリストのメンバーである場合、メンバ関数を確認したいです。 Common Lispの返信ので答えは、

true 

が、私は何か間違ったことをやっている必要があります:

Error: Cannot coerce (A 6) to type STRING. 

は、どのように私は、最初のリストから2番目の引数を取ることができますか? ありがとうございました。あなたが不足している何

答えて

5

:key引数がmemberの最初の引数に適用されないであるということです。

もう一つは、second、ないシンボルを返すということです。したがって

:戻り値は、ないマッチしたリスト要素であることを

(member 'A '((A 7) (B 6) (E 6) (D 5)) :test #'string-equal :key #'first) 
==> ((A 7) (B 6) (E 6) (D 5)) 
(member 'C '((A 7) (B 6) (E 6) (D 5)) :test #'string-equal :key #'first) 
==> NIL 
(member 'E '((A 7) (B 6) (E 6) (D 5)) :test #'string-equal :key #'first) 
==> ((E 6) (D 5)) 

注意。 これはnilを見つけ、何も発見しない区別するために、すなわち、述語としてmemberの使用を可能にすることである。

(member nil '(1 2 nil 3)) 
==> (NIL 3) 
(find nil '(1 2 nil 3)) 
==> NIL 
(find t '(1 2 nil 3)) 
==> NIL 
関連する問題