1

それで(car '(2 3)) -> 2

(cdr '(2 3)) -> (3)

3を生成するために何かを取得できるようにするには、どの関数を使用する必要がありますか?

(function-name '(2 3)) -> 3
4

3 に答える 3

7

単純に行うのは問題ないはずです。

(car (cdr '(2 3)))

これは次と同じです:

(cadr '(2 3))

これが機能するのは、「car」が式の最初の要素を取得するのに対し、cdrは最初の要素なしでリストの残りの部分を返すためです。「(cdr'(2 3))」が「(3)」のリストを返すことはすでに示しました。したがって、この「車」は要素(リストではない)「3」です。ちなみに、「(cdr(cdr( '2 3)))」は「(cdr(3))」、つまり「()」です。

LISPは面白くないですか?

于 2013-03-08T23:40:39.220 に答える
2

ヒント:

carリストの最初の要素を参照します。

cdrリストの残りの部分を参照し、それ自体がリストです。

したがって、必要なのは、最後の要素を含むリストから最初の要素を返す関数です。

于 2013-03-08T23:42:37.383 に答える
0

を使用することもできます(second '(2 3))secondの別名ですcadr

于 2013-03-23T05:33:33.193 に答える