SICP 2

SICPを二章から再読してる。

一章は数学に疎かったら、あんまり近付かないほうが良いような気もしないでもない。
よく考えたら、consとかlistすら二章で初めて出てくるのか。なんという本だ。

2.1.4で浮動小数点と戯れる。


gosh> (= (/ (+ 0.1 0.2) 2) (/ 0.3 2))
#f
ぬわんで?

CでもRubyでもそうなる。
そういうもんだったか。浮動小数点なんて長らく触ったこともないから忘れてたよ。


問題 2.16
一般に等価な式が異なる答になる理由を説明せよ。
この欠点のない区間演算パッケージを工夫することは可能か。

すくなくともこの問題に関してだけでいえば、ユーザの入力を前の節で出てきた有理数に変換してしまってから計算すれば、誤差の蓄積は回避できるような気もする。

Gaucheでユーザ入力文字列から数値に変換する方法を考えたけど、面倒くさそうなので、誰か頼む。やる気ないし。