SICP Exercise 2.25
Question
Give combinations of cars and cdrs that will pick 7 from each of the
following lists:
(1 3 (5 7) 9)
((7))
(1 (2 (3 (4 (5 (6 7))))))
Answer
You can either do this using only car and cdr or with some of the
helper functions offered by Scheme, such as cadadr and the like. But
keep in mind these only exist until up to four letters between c and r,
so there is no such thing as cadaddr or cadadadadadadr.
(define l1 (list 1 3 (list 5 7) 9))
(define l2 (list (list 7)))
(define l3 (list 1 (list 2 (list 3 (list 4 (list 5 (list 6 7)))))))
(car (cdr (car (cdr (cdr l1)))))
; or
(car (cdaddr l1))
(car (car l2))
; or
(caar l2)
(car (cdr (car (cdr (car (cdr (car (cdr (car (cdr (car (cdr l3))))))))))))
; or
(cadadr (cadadr (cadadr l3)))
Here are the results of the above:
7
7
7
7
7
7