SICP問題2.4

(define (cons x y)
  (lambda (m) (m x y)))
(define (car z)
  (z (lambda (p q) p)))

これに対する cdr の定義は何か?

car は以下のように展開される

(car (cons x y))
=> (cons x y) -> (lambda (m) (m x y)), (car z) -> (lambda (p q) p) なので
((lambda (m) (m x y)) (lambda (p q) p))
=> この m に  (lambda (p q) p) が入るので
((lambda (p q) p) x y)
=> よって x が返る。

cdr は同様に y を返すようにすれば良いので

(definen (cdr z)
  (z (lambda (p q) q)))

となる