SICP 問題 2.52(ペインタの総括っぽい感じ)

問題

図2.9に示した wave の square-limit を、上に示した各レベルで作業して変更せよ。特に、


a. 問題 2.49 の基本的 wave ペインタに(例えば笑っているような)線分を加えよ。
b. corner-split で構成されるパターンを(例えば2つでなく、up-split と right-splitのコピーを使うことで)変更せよ。
c. square-limit で、square-of-four を使う版を、隅を異なるパターン(例えば Rogers 氏を、四角の隅では外側を向かせるように)修正せよ。

解答

この問題の直前のセクションで、「頑健な設計のための言語レベル」っつーのがあるんだが、
記載されている内容はようするに適切なレイヤーで適切な処理を記述するようにしようね、というモノ。
で、a、b、c はそれぞれ異なるレイヤーに対して適切な変更を入れろよという意図の問題って感じ?

a.について

これは〜既に独自のペインタ house を作ったからいいら?
ようするに最下層レイヤーに手をいれてやろう的な。

b.について

もともとの corner-split 手続の定義はこのエントリに記述してある。
で、これを up-split と right-splitのコピーを使うように変更しろと書いてあるがどういうことを言っているのかさっぱり理解できない。。
どういうこと?(ていうか訳がおかしくない?(と文句を言いつつ、原文を読む気にまではならない。。))

c.について

square-of-four 手続を使用した square-limit 手続の定義はこのエントリで記載されている。
でもこれって、既に四隅をそれぞれ別の方向を向いたペインタで描画してねぇか?
あ、ただし、定義中で使用されている identity 手続はペインタに対して無変換のペインタを返す手続で、今までのエントリではまだ出現していない。なので、次のような手続として painter.scm に追加する。

(define (identity painter)
  painter)

さて、上記の手続に続いて square-of-four 手続と、square-limit 手続も painter.scm に追加して、main.scm を実行してみる。

できてんじゃん。

総括

ちょっと問題文の意味が分からないなぁ。b.なんて全然意味わかんないし、c.も既にできてるし、正しい解釈ができてない気がする。
いいのか?図形言語の最後の問題の解答がこんなで??w