赋予单个功能以访问列表L中的元素a。
(define L '(1 2 (a 3 4 5)))
按照将id绑定到表达式结果的形式(定义id expr),我尝试了以下操作:
(define L '(1 2 (a 3 4 5) (car(cdr L))))
cdr访问列表的末尾,即3 4 5,如果我没记错的话,然后我将car放在尾部以访问列表的头,即a。但是,它在DrRacket IDE上不起作用。
答案 0 :(得分:2)
我认为您打算这样做:
(define L '(1 2 (a 3 4 5)))
(car (car (cdr (cdr L))))
=> 'a
也可以写成:
(caaddr L)
=> 'a
答案 1 :(得分:2)
您将(car(cdr L))
部分包括在列表L
中。
> (define L '(1 2 (a 3 4 5) (car(cdr L))))
> L
(list 1 2 (list 'a 3 4 5) (list 'car (list 'cdr 'L))) ;; oh no
但这仍然不能提取'a
,因为您需要访问内部列表的car
:
(define L '(1 2 (a 3 4 5)))
(car (car (cdr (cdr L))))
;; or (caaddr L)