奇怪的常见Lisp错误(SBCL)



我遇到了一个非常奇怪的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

最新更新