EoPL reading (120) 2.3 Representation Strategies for Data Types
昨晩の続き。subst-in-terms です。
ぢつは仕事中、ってか休憩中に map 使えるぢゃん、ってコトに気づく。
さくっと以下を書いて
(define subst-in-terms (lambda (l s) (map (lambda (t) (subst-in-term t s)) l)))
試験してみた。
(test* "(subst-in-terms '((constant-term 1)) (empty-subst))" '((constant-term 1)) (subst-in-terms '((constant-term 1)) (empty-subst)))
とりあえず動いている模様。ちなみに map って '() 渡したらどうなるんだっけ? と言いつつ以下も追加。
(test* "(subst-in-terms '() (empty-subst))" '() (subst-in-terms '() (empty-subst)))
大丈夫みたい。なんとなく subst-in-term も map 使えそうだな。ってか、手クセになってる以下なソレって
(app-term (terms) (let f ((rslt '()) (terms terms)) (if (null? terms) (app-term rslt) (f (append rslt (list (subst-in-term (car terms) s))) (cdr terms))))))))
map で書けるんじゃん、ってコトに今さら気がついてたりして。そりゃ良いとして試験をもう少しきちんと書く必要ありですな。
多分試験は現実トウヒになると思ってます。次に着手できれば別途追記します。