; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 04/23/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================
;; SICP No.2.5
;; 因为2和3互质,2^a * 3^b的结果可以完整保存a和b的信息,因此
(define (cons a b) (* (expt 2 a) (expt 3 b)))
(define (fact-n x c a)
(if (> (remainder x c) 0)
a
(fact-n (/ x c) c (+ a 1))))
(define (car z) (fact-n z 2 0))
(define (cdr z) (fact-n z 3 0))
;; Test-it:
;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
;; > (car (cons 3 6))
;; 3
;; > (cdr (cons 3 6))
;; 6