第20回 素人くさいSICP読書会(at 赤坂某所)
- いきなり中山さんに○ルヒのことばっかり書いてるとか言われる。自粛してるつもりなんだけどなあ。実はカバンの中にラノベ版が入ってたんで申し開きの余地はないわけだが
- 今日はノートの処理能力最弱
- 結局、コードを書かずに紙にばっか書いてた。DrScheme入れて行ったのに。たしかにSICPってSchemeとあんまり関係ない部分がけっこうある
- 問題2.9:福盛さんがaddをホワイトボードに書いてくれたので、自分は続きでsubを書いてみる。w(x)+w(y)という結果になったんだけど、「w(x)-w(y)じゃないのか」という指摘が。「引き算は(値0の軸で)上下に折り返した範囲を足してるのと同じだからw(x)+w(y)でいいはず」というフォローをもらう。なるほど
- 誤差を含む値同士の計算結果の誤差が元の誤差より小さくなるってのは直感的にちょっと受け入れがたい
- 乗算と除算は、同じ範囲を上下にいろいろ平行移動しながら計算すると、値がバラバラになるというのを示すのが簡単らしい
- 問題2.10:割る側の範囲がゼロを含むならエラーを返すコードを書くだけ。ただ、端点の計算がなぜおかしくなるのかがいまいちよくわからなかった
- 問題2.11:まず場合分け。xとyが交換可能な3組(6通り)とすべて+、すべて-(合計8通り)の乗算は一意に決まる。xとyがいずれも範囲に0を含む場合のみminとmaxを使って実装すればいい
- というところまではできたんだけど、場合分けができた時点で安心しちゃって手が動かず。ほかにも場合分けができた人はけっこういたっぽいけど、まじめに実装したのは、たぶん発表者のひらたさんだけ。みんな、面倒な実装を下流工程に押しつける腐れ上流だ(涙)
- なんか話がかみあわないなと思ったら、第1刷に「二回以上」という誤植があったのが原因。自分のは第3刷なんで「二回を超える」と正しく直されてた。第1刷の表現ではこの問題は解けないことになってしまう。ききょうさんが正誤表を回してくれた
- 来週までに実装しておくこと>自分
飲み会