問題2.4

これも驚き問題。

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

(car (cons x y))
=> (car (lambda (m) (m x y)))
=> ((lambda (m) (m x y)) (lambda (p q) p))
=> ((lambda (p q) p) x y)
=> x

; cdrの定義
(define (cdr z)
  (z (lambda (p q) q)))

確かに、これでcons, car, cdrが定義できているけど、どうやってこんなの思いつくんだよ!!