0

このリストを考えてみましょう: ((3 (1 (2 15) (8 5))) (1 10))、頭と体を取得したいと思います。プロシージャ "car" は次のように機能します: (car '((3 (1 (2 15) (8 5))) (1 10))) - 最初の項目 (リスト) を返します

(3 (1 (2 15) (8 5)))

しかし、手続き "cdr: return list within another list ... (cdr '((3 (1 (2 15) (8 5))) (1 10)))

((1 10))

代わりに (1 10) が欲しいです。スキームには何らかの手順がありますか、またはそれに到達する方法を知っていますか (最初の 2 文字と最後の 2 文字が括弧であるかどうかを確認するなど)。

皆さん、ありがとうございました:)

4

1 に答える 1

3

基本的carcadrcaddr最初、2 番目、3 番目の要素を取得するには、、、、... があります。

consリストは、に値がcarあり、残りのリストが にあるリンクされたリストcdrです。'(a b c d)と同じで、'(a . (b . (c . (d))))で作ることができます(cons a (cons b (cons c (cons d '()))))cdrそれは で(b . (c . (d)))ありcar、それもまたbです。(car (cdr '(a . (b . (c . (d))))))ですb。_ Scheme は 2..5 などの省略形を作成しているので、真ん中の文字を見るだけで、(cadr '(a . (b . (c . (d)))))

于 2014-04-11T18:09:56.740 に答える