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 な註釈ガラミ。