所以(car '(2 3)) -> 2
(cdr '(2 3)) -> (3)
我应该使用哪种功能才能获得收益3?
(function-name '(2 3)) -> 3
答案 0 :(得分:7)
完全可以这样做:
(car (cdr '(2 3)))
与以下内容相同:
(cadr '(2 3))
这是因为“car”获取表达式中的第一个元素,而cdr返回列表的其余部分,而没有第一个元素。你已经证明“(cdr'(2 3))”返回一个“(3)”列表。因此,这个“汽车”是元素(不是列表),“3”。顺便说一句,“(cdr(cdr('2 3)))”是“(cdr(3))”,即“()”。
LISP不是很有趣吗?
答案 1 :(得分:2)
提示:
car
指的是列表中的第一个元素。
cdr
指的是列表的余数,它本身就是一个列表。
所以你需要的是一个函数,它返回包含最后一个元素的列表中的第一个元素。
答案 2 :(得分:0)
您也可以使用(second '(2 3))
。 second
是cadr
的另一个名称。