如何使用 car cdr cadr caddr 等访问球拍中的嵌套列表?
How do I access nested list in raket using car cdr caar caddr etc.?
我正在尝试熟悉访问 Racket 中的嵌套列表。我有以下问题。例如,我有一个这样的列表 define x (list 1 2 3 )
我理解 (car x) -> 1
和 (cdr x) -> (2 3)
。但是如果我有一个这样的列表定义 y (list (list (list 6 7 8 ) 2 5 ) 3 4 5 6 ))
并且我 运行 (caaar y)
我得到 6
。我明白到现在为止发生了什么。我不明白的是为什么我在 运行 (caadr y)
时会出错。 (说违约)而不是返回( 7 8 )
。你能给我解释一下吗?
(caadr y)
是 (car (car (cdr y)))
,所以你会得到 (car (car '(3 4 5 6)))
=> (car 3)
=> error
.
你需要return'(7 8)
,也就是(cdr (car (car y)))
,所以字母的顺序是这样的:C-cDr-cAr-cAr-R => CDAAR, (cdaar y)
.
我正在尝试熟悉访问 Racket 中的嵌套列表。我有以下问题。例如,我有一个这样的列表 define x (list 1 2 3 )
我理解 (car x) -> 1
和 (cdr x) -> (2 3)
。但是如果我有一个这样的列表定义 y (list (list (list 6 7 8 ) 2 5 ) 3 4 5 6 ))
并且我 运行 (caaar y)
我得到 6
。我明白到现在为止发生了什么。我不明白的是为什么我在 运行 (caadr y)
时会出错。 (说违约)而不是返回( 7 8 )
。你能给我解释一下吗?
(caadr y)
是 (car (car (cdr y)))
,所以你会得到 (car (car '(3 4 5 6)))
=> (car 3)
=> error
.
你需要return'(7 8)
,也就是(cdr (car (car y)))
,所以字母的顺序是这样的:C-cDr-cAr-cAr-R => CDAAR, (cdaar y)
.