我试图在一个列表中获取一个特定元素的car/cdr:
(define x7 '(1 3 (5 7) 9))
; The cdr (3 (5 7) 9)
; The cddr ((5 7) 9)
; The caddr (5 7)
; The cdaddr (7)但是,如果我对结果执行car,那么我就能得到很大的下降,但是如果我将另一个a添加到简短的表单中,就会得到一个错误:
(car (cdaddr x7)) ; OK
(cadaddr x7) ; cadaddr: unbound identifier in: cadaddr简短的表格只会增加五个字符/步骤,还是我在这里遗漏了什么?
发布于 2021-05-25 00:29:19
根据R6RS报告
提供的任意构图,深度可达四层。这些程序总共有二十八种.
这与R5RS和新的R7RS报告相同。当然,没有什么可以阻止实现添加更多内容,但是使用这些可以移除程序的可移植性,因为其他实现可能只提供所需的4深度。
当然,你可以提供你自己的:
(define (cadadadr p)
(cadar (cdadr p)))由于Scheme没有任何保留的单词,所以即使语言或实现决定在稍后的时间包含这些单词,这也是有效的。它将永远不会使用新的和使用您的定义。
https://stackoverflow.com/questions/67680068
复制相似问题