Tagged as challenge
Written on 2018-02-06
Most Lisps have combinations of car and cdr built in, usually up
to four levels deep, e.g., caaddr and cdaddr are built-ins
referring to
(lambda (x) (car (car (cdr (cdr x)))))
; and
(lambda (x) (cdr (car (cdr (cdr x)))))
respectively. Implement a macro (generate-cxr n) which generates the
definitions of all car/cdr combinations up to n times.
If your language doesn't support macros or dynamic definitions, write
a function of the same name which produces a list of all car/cdr
combinations as anonymous functions.
Extra Credit: Implement this as efficiently as possible, using the least amount of space.