我遇到了一个非常奇怪的Lisp错误。我正在使用 sbcl 并编写了以下代码。我只是希望有人能解释一下。
(setq x '((1 (x y) (1 2)) (3 (x z) (2 3)) (3 (x y) (1 2)) (4 (x y) (1 2))))
(caddadr x)
给出以下错误消息
;评估在 # 上中止。
但是把它写在 for 给了我我所期望的,那就是
(car (cddadr x))
(2 3)
只是想知道为什么这是诚实的。
没有caddadr
这样的函数,这就是原因。
* (fboundp 'caddadr)
NIL
* (fboundp 'cddadr)
T
你刚刚CAR, CDR, CAAR, CADR, CDAR, CDDR, CAAAR, CAADR, CADAR, CADDR, CDAAR, CDADR, CDDAR, CDDDR, CAAAAR, CAAADR, CAADAR, CAADDR, CADAAR, CADADR, CADDAR, CADDDR, CDAAAR, CDAADR, CDADAR, CDADDR, CDDAAR, CDDADR, CDDDAR and CDDDDR
.请参阅:http://clhs.lisp.se/Body/f_car_c.htm