問題 2.4
(define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) ;(car (cons x y))->xになるのを説明せよといわれても、 ;コードをみれば自明であるとしか言いようがない。 ;これにたいするcdrは (define (cdr z) (z (lambda (p q) q))) ;となる ;(car (cons 1 2)) ;-> 1 ;(cdr (cons 1 2)) ;-> 2 ;ok ;一応プロセスをしめしてみる。 ;(car (cons 1 2)) ;((cons 1 2) (lambda (p q) p)) ;((lambda (m) (m 1 2)) (lambda (p q) p)) ;((lambda (p q) p) 1 2) ;p -> 1 ;(cdr (cons 1 2)) ;((cons 1 2) (lambda (p q) p)) ;((lambda (m) (m 1 2)) (lambda (p q) p)) ;((lambda (p q) q) 1 2) ;q -> 2 ;こっちのconsのほうが、2.1.3のconsより簡潔で美しいコードだなー