基本LISP问题

时间:2013-03-08 23:36:11

标签: lisp common-lisp

所以(car '(2 3)) -> 2

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

我应该使用哪种功能才能获得收益3?

(function-name '(2 3)) -> 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))secondcadr的另一个名称。