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)))
となる