sicp

4.16 の内部 define を let 化するやつが解けなくて困る

追記2 循環参照ではなくて、lambda が env を束縛してるだけだった。 前に進んで、今度は apply が問題になるところまで前進。 apply の中で compound-procedure 扱いになって、eval-sequence で死ぬ。 死んでしまうのはしょうがないので考察だけにしておこ…

ex 3.82 ストリーム演算の最後の問題

久しぶりすぎる。 ex 3.5 とかで書いたはずのモンテカルロ法を再度実装するんだけど、3章中盤より前のコードが手元に無かった。 いくつか公開されてるところを参照しながらとりあえず書いたんだけど、やはり結果に自信が無い。 format で %f が使えないのか…

ex3.70 は諦めて先に進んで ex3.75 まで

2 年前に sicp の問題解いている人はあんまり見つからんかった。 今はぼろぼろ出てくるな。 lisp が広まりつつあるということか。 shibuya.lisp とかまで出かけなくてもどこかで出会うことになったりして。関係ないけど来週から自習を強化するつもり。 具体…

ex 3.70 から再開しかけた

part b not finished · yujiorama/sicp@c3ddea3 · GitHub 去年の10月時点で ex3.69 が終わってて検算するだけだったを忘れてた。 ちょびっとだけ進んで 3.70a までできたつもり。

対の無限のストリーム

ループを無限ストリームで表現できたりする。 二つのストリームから交互に値を取得する interleave 美しいですね (define (interleave s1 s2) (if (stream-null? s1) s2 (cons-stream (stream-car s1) (interleave s2 (stream-cdr s1)))))

3.63

Louis の質問に対する Alyssa の答えの説明。 Q. なんで直截書かないの A. 非効率だから なんでだろう。 delay のメモ化についてヒントのように書かれているから、そのあたりがポイントか。 内部手続きを返すこと、cons を返すことに着目する。 あまり自信が…

3.5.3 ストリームパラダイムの開発

反復でπの値を更新していったやりかたを元にして、更新される値をストリームとして表現する。π は級数の和で表現できるから、級数をストリームで表現して計算。収束が遅いので、加速する。オイラーの変換で交代級数を加速させる。劇的に収束が速くなった。 …

3.62

正接 = tangent だから、sin/cos してやればいいだけですね。 (load "./chapter3.scm") (load "./ex360.scm") (load "./ex361.scm") (define (div-series s1 s2) (if (= 0 (stream-car s2)) (raise "constant term is 0") (mul-series s1 (invert-unit-serie…

3.61

定義と恒等式に従って書くだけ。 (load "./chapter3.scm") (load "./ex360.scm") (define (invert-unit-series s) (cons-stream 1 (mul-series (scale-stream (stream-cdr s) -1) (invert-unit-series s))))

3.60

べき級数のかけ算、ということだから、和の積。 コンボリュージョンみたいなことをしてるんだろうか ? たぶんこれでいいと思うんだけど。 後半の add-stream が、べきの係数項を乗じてずらした式の和を表現してるのでしょう。 (define (mul-series s1 s2) (c…

3.59

cosine と sine は思い付かなかった。頭いーな。 http://www.parsprototo.org/StoppingTime/?p=7 ;;; a (define (integrate-series a) (define (merge-series a s) (cons-stream (/ (stream-car a) (stream-car s)) (merge-series (stream-cdr a) (stream-cd…

3.58

割り算

3.57

delay を macro で定義しようとしたらなぜか fibs が unknown symbol になってしまった。 悩みすぎてもしょうがないので add-stream を改変して済ませてみる。http://gist.github.com/190724 http://gist.github.com/190725表示用にこんな手続きを使いました…

久々に見直したら思考が止まった

前に書いてたもろもろを Mac に移してみたけれど、これまで何やってたのか分からん... とりあえず前を見てなくてもよさそうなストリームらへんから再開しようと思います。