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 で書けるんじゃん、ってコトに今さら気がついてたりして。そりゃ良いとして試験をもう少しきちんと書く必要ありですな。
多分試験は現実トウヒになると思ってます。次に着手できれば別途追記します。