リストからcを返すcarとcdrで構成される式を記述します'(a (b c) (d))
。
私はDrRacketというプログラムを使用しています
私は試した
(car (car (car (cdr '(a (b c) (d))))))
自分でcを取得しますが、機能しません。
エラーは次のように述べています。
mcar: contract violation
expected: mpair?
given: b
コードに小さなエラーがあります: 外側のリストの 2 番目の要素 (内側のリスト) の 2 番目の要素が必要であることに注意してください。あなたのコードは次のように述べています:リストの2番目の要素の最初の要素の最初の要素を取得します:
(car (car (car (cdr '(a (b c) (d))))))
...エラーが発生します。あなたが意図したのはこれでした:
(car (cdr (car (cdr '(a (b c) (d))))))
順を追って見てみましょう。
(cdr '(a (b c) (d))) ; => '((b c) (d)) : rest of the outer list
(car (cdr '(a (b c) (d)))) ; => '(b c) : second element of the outer list
(cdr (car (cdr '(a (b c) (d))))) ; => '(c) : rest of the inner list
(car (cdr (car (cdr '(a (b c) (d)))))) ; => 'c : second element of the inner list
(cadadr '(a (b c) (d)))
cadadr
のシンタックスシュガーです(car (cdr (car (cdr ...)))