SICP 読み (75) 2.5.3 例: 記号代数
いくつか試験を考えている間に、term-list が空リストだったら 0 である事に気づく。練習問題にあったはず。ざくっと試験を書いてみたのだけれど、以下のような試験をしたら通った。
("normal (6x + 5) * (2x^2 + 3) -> 12x^3 + 10x^2 + 18x + 15" (let ((test (mul (make-polynomial 'x '((1 6) (0 5))) (make-polynomial 'x '((2 2) (0 3)))))) (assert-equal 'polynomial (car test)) (assert-equal 'x (cadr test)) (assert-equal '((3 12) (2 10) (1 18) (0 15)) (cddr test))) )
order の順番にならんでいるな、と言いつつソースをニラむ。よく考えると加算の結果もきちんと並んでいたな。add-terms 手続きですか。
ただ、演算に渡される polynomial なオブジェクトの term-list の並びが順になっているのが前提なのか。なんかそんなコトがテキストに書いてあったような気もするな。
む、でも mul-term-by-all-terms が吐き出すリストも sort 済みなソレなの??
って良く見りゃ確かにそうなってますな。良くできてるなぁ。
一応試験ができ上がったぽいので練習問題に着手予定。
追記
もう少し色々やっといた方が良さげ。p.120 - p.121 な註釈ガラミ。