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

Hints:

car refers to the first element in the list.

cdr refers to the remainder of the list, and is itself a list.

So what you need is a function that returns the first element from a list containing the last element.

于 2013-03-08T23:42:37.383 回答
0

你也可以使用(second '(2 3)). second是 的另一个名称cadr

于 2013-03-23T05:33:33.193 回答