2015/10/31
SICP 問題 2.78
(define (attach-tag type-tag contents)
(if (eq? type-tag 'scheme-number)
contents
(cons type-tag contents)))
(define (type-tag datum)
(cond ((number? (car datum)) 'scheme-number)
((pair? datum) (car datum))
(else (error "Bad tagged datum -- TYPE-TAG" datum))))
(define (contents datum)
(cond ((number? (car datum)) 'scheme-number)
((pair? datum) (cdr datum))
(else (error "Bad tagged datum -- CONTENTS" datum))))