SICP 2.5

更に別のcar, cdr, consの表現。あまり面白い問題じゃないな。

(define (_cons a b)
  (* (expt 2 a) (expt 3 b)))

(define (pow n m)
  (let ((rem (remainder n m))
        (quot (quotient n m)))
    (if (= 0 rem)
        (+ 1 (pow quot m))
        0)))

(define (_car z)
  (pow z 2))

(define (_cdr z)
  (pow z 3))

(define p (_cons 5 6))
(_car p)
(_cdr p)

組み込み手続きeven?を使った方が短く書ける。