問題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が定義できているけど、どうやってこんなの思いつくんだよ!!