開発環境
- 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.5.1(ストリームは遅延リスト)、ストリームの実装の働き、delayとforceの実装、問題 3.60、問題 3.61、問題 3.62を解いてみる。
その他参考書籍
問題 3.60
コード(BBEdit)
sample.scm
(define (mul-series s1 s2)
(cons-stream (* (stream-car s1)
(stream-car s2))
(add-streams (scale-stream (stream-cdr s1)
(stream-car s2))
(mul-series s1
(stream-cdr s2)))))
問題 3.61
コード(BBEdit)
sample.scm
(define (invert-unit-series s)
(cons-stream 1
(stream-map (lambda (x) (* -1 x))
(mul-series (stream-cdr s)
(invert-unit-series s)))))
問題 3.62
コード(BBEdit)
sample.scm
(define (div-series s1 s2)
(let ((a (stream-car s2)))
(if (= a 0)
(error "Division by zero")
(mul-series s1
(scale-stream (invert-unit-series
(scale-stream s2 (/ 1 a)))
a)))))
;; 正接のべき級数
(define tangent-series (div-series sine-series
cosine-series))
0 コメント:
コメントを投稿