SICP 読み (84) 2.5.3 例: 記号代数
問題 2.90 の続き
ナチュラルが原因の bug も取れたので試験再開。がしかし ...
add な試験をいくつか追加して、mul の試験に。1x1 な試験を書いたら
*** ERROR: unbound variable: the-empty-termlist
なご指摘が。これ、てきとーなゴマカシ方してるんだよなぁ。仕方が無いんで引数渡すか。何か良い方法は無いモノか。
(define (mul-terms L1 L2) (if (empty-termlist? L1) ; (the-empty-termlist) L1 (add-terms (mul-term-by-all-terms (first-term L1) L2) (mul-terms (rest-terms L1) L2)))) (define (mul-term-by-all-terms t1 L) (if (empty-termlist? L) ; (the-empty-termlist) L (let ((t2 (first-term L))) ((adjoin-term (mul-term-by-all-terms t1 (rest-terms L))) (make-term (+ (order t1) (order t2)) (mul (coeff t1) (coeff t2)))))))
これはこれで微妙だなぁ。一応試験は通ります (当たり前
とりあえずこれで残りは力仕事だけだと願いたひ。
neg
と思ったら neg な試験でコケた。で、これを
(define (neg-terms L) (if (null? L) '() (let ((t (first-term L))) ((adjoin-term (neg-terms (rest-terms L))) (make-term (order t) (- (coeff t)))))) )
こうしたら通った。微妙。
(define (neg-terms L) (if (empty-termlist? L) L (let ((t (first-term L))) ((adjoin-term (neg-terms (rest-terms L))) (make-term (order t) (- (coeff t)))))) )
これで sparse なソレは一段落なの??
微妙に気になっているのは first-term に空リストを渡したトキの挙動。タグが付いてないんだよねぇ。基本的には起こり得ないケースなはずなんですが ...
で、昨晩 dense 方面に着手したんですがハマりまくっています。