Skip to content

Library CxR

Jacques Nomssi edited this page Feb 14, 2018 · 2 revisions

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

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

Clone this wiki locally