LISP车的最后一个元素?

toa*_*ast 2 lisp warnings clisp

LISP又把我弄糊涂......为什么我不能得到列表中最后一个元素的值?我有一个类似于此的列表设置:

(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))
Run Code Online (Sandbox Code Playgroud)

现在我获得了4的回报:

(caddar bar)
Run Code Online (Sandbox Code Playgroud)

(5)返回:

(cdddar bar)
Run Code Online (Sandbox Code Playgroud)

但我不能得到5:

(cadddar bar)
Run Code Online (Sandbox Code Playgroud)

这是为什么 - 我怎样才能获得5的价值?

错误:

; Warning: This function is undefined:
;   CADDDAR

Error in KERNEL:%COERCE-TO-FUNCTION:  the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
Run Code Online (Sandbox Code Playgroud)

jtd*_*ubs 8

没有定义具有5个或更多a和d的函数.只有4个或更少.这个长度有太多可能的功能,因为它是实用的.

你必须拼写出来: (car (cdr (cdr (cdr (cdr (car x))))))

  • 在你的LISP实施的深处某处是:( defun cadr(x)...)(defun cdar(x)......)(defun caar(x)......)(defun cddr(x)...对于长度为1到4的'a'和'd'的所有组合,等等.规范不包括长度为5的那些,因为它们太多了.#cdadr函数系列没什么特别之处.它们不会在解释时唯一解析.它们只是正常的功能.你非常欢迎(defun ...)一些新的填补空白. (2认同)