問題2.78 – SICP(計算機プログラムの構造と解釈)その88
2009年02月01日
問題2.78
元の scheme-number
での演算
(add (make-scheme-number 2) (make-scheme-number 3)) gosh> (scheme-number . 5)
最初に考えた解答
(define (type-tag datum) (if (pair? datum) (car datum) 'scheme-number)) (define (contents datum) (if (pair? datum) (cdr datum) datum)) (define (attach-tag type-tag contents) (if (eq? type-tag 'scheme-number) contents (cons type-tag contents))) (add 2 3) gosh> 5
上の方法では type-tag
、contents
にあったエラー処理が無くなってしまったので以下のように修正する。
(define (type-tag datum) (cond ((number? datum) 'scheme-number) ((pair? datum) (car datum)) (else "Bad tagged datum -- TYPE-TAG" datum))) (define (contents datum) (cond ((number? datum) datum) ((pair? datum) (cdr datum)) (else "Bad tagged datum - CONTENTS" datum))) (add 2 3) gosh> 5
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542