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)))