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 方面に着手したんですがハマりまくっています。