基本的LISP问题



那么(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))secondcadr的另一个名称。

最新更新