Library CxR - nomssi/abap_scheme GitHub Wiki

From the specification

The (scheme cxr) library exports twenty-four procedures which are the compositions of from three to four car and cdr operations. For example caddar could be defined by

(define caddar (lambda (x) (car (cdr (cdr (car x)))))).

The procedures car and cdr themselves and the two-level, three-level and four-level compositions are included in the base library.

(caar x)   ->    (car (car x))
(cadr x)   ->    (car (cdr x))
(cdar x)   ->    (cdr (car x))
(cddr x)   ->    (cdr (cdr x))

The higher level composition could have been implemented in Scheme Source Code

; CxR Library
(define (caar x) (car (car x )))
(define (cadr x) (car (cdr x )))
(define (cdar x) (cdr (car x )))
(define (cddr x) (cdr (cdr x )))
(define (caaar x) (car (caar x)))
(define (cdaar x) (cdr (caar x)))
(define (caadr x) (car (cadr x)))
(define (cdadr x) (cdr (cadr x)))
(define (cadar x) (car (cdar x)))
(define (cddar x) (cdr (cdar x)))
(define (caddr x) (car (cddr x)))
(define (cdddr x) (cdr (cddr x)))
(define (caaaar x) (car (caaar x)))
(define (cdaaar x) (cdr (caaar x)))
(define (cadaar x) (car (cdaar x)))
(define (cddaar x) (cdr (cdaar x)))
(define (caaadr x) (car (caadr x)))
(define (cdaadr x) (cdr (caadr x)))
(define (cadadr x) (car (cdadr x)))
(define (cddadr x) (cdr (cdadr x)))
(define (caadar x) (car (cadar x)))
(define (cdadar x) (cdr (cadar x)))
(define (caddar x) (car (cddar x)))
(define (cdddar x) (cdr (cddar x)))
(define (caaddr x) (car (caddr x)))
(define (cdaddr x) (cdr (caddr x)))
(define (cadddr x) (car (cdddr x)))
(define (cddddr x) (cdr (cdddr x)))