2013年8月17日土曜日

開発環境

計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の3(標準部品化力, オブジェクトおよび状態)、3.5(ストリーム)、3.53(ストリームパラダイムの開発)、対の無限のストリーム、問題 3.72を解いてみる。

その他参考書籍

問題 3.72

コード(BBEdit)

sample.scm

(define (weight-sqares pair)
  (+ (square (car pair))
     (square (cadr pair))))

(define pairs-weighted-squares
  (weighted-pairs integers integers weight-squares))

(define stream
  (define (inner s w)
    (let ((p1 (stream-car s))
          (p2 (stream-car (stream-cdr s)))
          (p3 (stream-car (stream-cdr (stream-cdr s)))))
      (let ((w1 (weight-sqares p1))
            (w2 (weight-sqares p2))
            (w3 (weight-sqares p3)))
        (cond ((= w1 w)
               (inner (stream-cdr s) w))
              ((= w1 w2 w3)
               (cons-stream w1
                            (inner (stream-cdr (stream-cdr (stream-cdr s)))
                                   w1)))
              (else
               (inner (stream-cdr s 0)))))))
  (inner pairs-weighted-squares 0))

0 コメント:

コメントを投稿