理系学生日記

おまえはいつまで学生気分なのか

問題2-78 (2.5.1 Generic Arithmetic Operations)

ようやくちょっと分かってきた。ていうか、この2.5に入って、問題の意図を汲み取るのもムズかった。

(define (attach-tag type-tag contents)
  (if (eq? type-tag 'scheme-number)
      contents
      (cons type-tag contents)))
      
(define (type-tag datum)
  (cond ((pair? datum) (car datum))
	((number? datum) 'scheme-number)
	(else (error "Bad tagged datum -- TYPE-TAG" datum))))

(define (contents datum)
  (cond ((pair? datum) (cdr datum))
	((number? datum) datum)
	(else (error "Bad tagged datum -- CONTENTS" datum))))