那么(car '(2 3)) -> 2
(cdr '(2 3)) -> (3)
我应该使用哪个函数才能得到产生3的东西?
(function-name '(2 3)) -> 3
只要这样做就可以了:
(car (cdr '(2 3)))
等于:
(cadr '(2 3))
之所以有效,是因为"car"获取表达式中的第一个元素,而cdr返回列表的其余部分,但不包含第一个元素。您已经展示了"(cdr '(2 3))"返回一个"(3)"的列表。因此,它的"car"是元素(而不是列表)"3"。顺便说一下,"(cdr (cdr(2 3)))"是"(cdr)(3)",这是"()"。
LISP不是很有趣吗?
提示:
car
表示列表中的第一个元素。
cdr
表示列表的余数,它本身也是一个列表。
所以你需要的是一个函数,从包含最后一个元素的列表中返回第一个元素。
您也可以使用(second '(2 3))
。second
是cadr
的另一个名称。