課題中に書いた入れ子状式の作り方は、あくまで一例ですので、 別に違う解き方をしてくれてもよいです。 ヒントの方は、課題とおなじコード生成を行う場合の解き方です。
ということで、例えば、以下のような二つの関数を作ってみましょう。
> (trans-expr-simplify '(+ (- (- x y) 2 (+ x y)) 9 (+ y z)) 0) (+ tmp0 9 tmp1)
> (trans-nested-args-2-stmts '(+ (- (- x y) 2 (+ x y)) 9 (+ y z)) 0) ((:= tmp0 (- x y)) (:= tmp1 (+ x y)) (:= tmp0 (- tmp0 2 tmp1)) (:= tmp1 (+ y z)))
さて、このような関数が出来てしまえば、 一般の式を変換する関数(trans-expr expr) をつくることは、 課題 2 をこなした人にとっては簡単なはず。
2001.01.23/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp