ペアの構成と表現を理解しようとしています。 のは、以下の結果を見てみましょう:スキームペアの構築
(length (cons '(a b) '(d e f)))
=> 4
今の順序を切り替えることができます:
(length (cons '(d e f) '(a b)))
=> 3
しかし
(length (car (cons '(d e f) '(a b))))
=> 3
あなたは上記の結果を説明していただけますか? 車とcdrの違いは何ですか?
ペアの構成と表現を理解しようとしています。 のは、以下の結果を見てみましょう:スキームペアの構築
(length (cons '(a b) '(d e f)))
=> 4
今の順序を切り替えることができます:
(length (cons '(d e f) '(a b)))
=> 3
しかし
(length (car (cons '(d e f) '(a b))))
=> 3
あなたは上記の結果を説明していただけますか? 車とcdrの違いは何ですか?
cons
は、歴史的な理由から、最初のものをcar
、次のものをcdr
といいます。
2番目が適切なリストである場合、その結果もリストになります。したがって、リストは、cons
の結果として定義され、結果は1つの要素がcons
となります...など、空のリスト'()
に達するまで続きます。たとえば、次のように
(cons 1 (cons 2 (cons 3 '())))
=> '(1 2 3)
リストを扱う場合は、残りの要素としてリストとcdr
の最初の要素としてcar
を考えると、cons
は、リストの先頭に1つの以上の要素が追加されます - その要素ができます何でもあり、を含むです。それはちょうど先頭に追加されます、リストは "合併されていません"(私たちはそれにappend
を使用します)。このように、最初のものは残りがで、リストの最初の要素として'(a b)
が追加されますので、私たちは今、4要素のリストを持っている - あなたの例については、今
(car '(1 2 3))
=> 1
(cdr '(1 2 3))
=> '(2 3)
:
を見てください第例えば同様(cons '(a b) '(d e f))
=> '((a b) d e f)
:我々は要素'(a b)
の残りの部分に最初の要素を追加して、我々は3要素のリストを得る:
(cons '(d e f) '(a b))
=> '((d e f) a b)
最後に、上記リストのcar
を呼び出すと、その最初の要素が得られます。これはであり、明らかに3つの要素を持っています。
(car (cons '(d e f) '(a b)))
=> '(d e f)