開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: MIT/GNU Scheme
計算機プログラムの構造と解釈(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 コメント:
コメントを投稿