2.04
; Here is an alternative procedural representation of pairs.
; For this representation, verify that (car (cons x y)) yields
; x for any objects x and y.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
; What is the corresponding definition of cdr? (Hint: To verify
; that this works, make use of the substitution model of Section 1.1.5.)
; Verify using substitution model
;
; => (car (cons x y))
; => (car (lambda (m) (m x y)))
; => ((lambda (m) (m x y)) (lamda (p q)) p))
; => ((lambda (p q) p) x y)
; => x
; `cdr` can be defined as,
(define (cdr z)
(z (lambda (p q) q)))