Cdr
- 構文
- (cdr list)
- 機能
- 指定されたリストの先頭の要素以外のすべての要素を含むリストを返す。
- CDR = Construct’s DORSAL Reference の略らしい。
- 引数
-
- list : リスト
- 戻り値
- list の先頭の要素以外のすべての要素を含むリスト(ただし、下の注を参照)。
- リストが空の場合、cdr 関数は nil を返す。
-
- 注:list 引数がドット ペアの場合、リスト内に含めずに第 2 要素を返す。
- サンプル
(cdr '(a b c)) (B C) ; --- (cdr '((a b) c)) (C) ; --- (cdr '()) nil ; --- (cdr '(a . b)) B ; --- (cdr '(1 . "Text")) "Text" ; --- (setq a '("one" "two" "three" "four") ("one" "two" "three" "four") (setq b (cdr a)) ("TWO" "THREE" "FOUR")
- MEMO
- AutoLISP は、car と cdr の連結を 4 レベルの深さまでサポートする。
- つまり、次の関数が有効。
caaaar cadaar cdaaar cddaar caaadr cadadr cdaadr cddadr caaar cadar cdaar cddar caadar caddar cdadar cdddar caaddr cadddr cdaddr cddddr caadr caddr cdadr cdddr caar cadr cdar cddr
- これらの連結は、car と cdr の呼び出しをネストしたものと同じ。
- 各 a は car の呼び出しを表し、各 d は cdr の呼び出しを表す。
例: (setq x '((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))) に対して
- (caar x) は (car (car x)) と同じ = x1
- (cadar x) は (car (cdr (car x))) と同じ = y1
- (caddar x) は (car (cdr (car x))) と同じ = z1
- (cdar x) は (cdr (car x)) と同じ = (y1 z1)
- (cddr x) は (cdr (cdr x)) と同じ = ((x3 y3 z3) (x4 y4 z4) (x5 y5 z5) (x6 y6 z6))
- (cadr x) は (car (cdr x)) と同じ = (x2 y2 z2)
- (caddr x) は (car (cdr (cdr x))) と同じ = (x3 y3 z3)
- (cadddr x) は (car (cdr (cdr (cdr x)))) と同じ = (x4 y4 z4)
- (caddddr x) は (car (cdr (cdr (cdr (cdr x))))) と同じ = エラー(ネストが5レベルになるので)
関連事項