2013年8月14日水曜日

開発環境

計算機プログラムの構造と解釈(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.68、問題 3.69を解いてみる。

その他参考書籍

問題 3.68

Louisのpairsの定義を使うと、手続きcons-streamが無くなり、すなわちdelayが無くなる(遅延評価)ので、再帰的に使われてる手続きpairsで無限ループが起きる。

問題 3.69

コード(BBEdit)

sample.scm

(define pythagoras-stream
  (stream-filter (lambda (triple)
                   (let ((i (car triple))
                         (j (cadr triple))
                         (k (caddr triple)))
                     (= (+ (square i)
                           (square j))
                        (squre k))))
                 (triples integers integers integers)))

(define (triples s t u)
  (cons-stream (list (stream-car s)
                     (stream-car t)
                     (stream-car u))
               (interleave
                (stream-map (lambda (pair)
                              (cons (stream-car s) pair))
                            (pairs t (stream-cdr u)))
                (triples (stream-cdr s)
                         (stream-cdr t)
                         (stream-cdr u)))))

0 コメント:

コメントを投稿