2010-06-01から1ヶ月間の記事一覧

SICP 問題 2.50(ペインタの変換)

問題 ペインタを水平に逆転する変換 flip-horiz と、ペインタを反時計回りに180度と270度回転する変換を定義せよ。 解答 transform-painter 手続きを使えば一発ですな。 以下の手続きを、前エントリで分離した painter.scm に追記する。 ;水平に逆転する変換…

SICP §2.2.4(図形言語 その9 [ファイルの分割])

さて、前エントリまででものすごくたくさんのコードを生成したわけだが、ちょっとカオス化してきたのでファイルを分割してみようと思う。と言っても難しく考えるわけじゃなく、ただ各種手続きを複数ファイルに分割し、main.scm で load するだけの単純なもの…

SICP §2.2.4(図形言語 その8 [ペインタの変換と組み合わせ])

前回のエントリまでで、やっと実際の描画処理までが繋がったけども、beside とか below とか flip-* 系の実装がまだ空中に浮いたままの状態なんすよ。 これを解決するのが今回のエントリとなる。 肝となる考え方は、ペインタを新しく指定するフレームに沿う…

SICP §2.2.4(図形言語 その7 [ペインタのまとめ])

さ、やっと『ペインタ』のおでましだ。ペインタはフレームを引数として受け取り、そのフレームに合うように描画しようとする手続だ。 ここで、やっとgauche-glとの融合がなされる・・・長かった。。 SICPで記述されているペインタの例は「線画のペインタ」だ…

SICP §2.2.4(図形言語 その6 [フレームの概念のまとめとフレーム座標写像について])

今度は『フレーム』の概念の説明。SICPによると、ペインタの実装方法と組み合わせ方法を考える前に『フレーム』を考えなきゃならんのだって。・・・知らんがな(´・ω・`)。 フレームを構成するのに必要な要素は、次の3つ。 ・原点ベクタ:平面の絶対原点から…

SICP §2.2.4(図形言語 その5 [高階関数としてのペインタの扱い])

次の「高階関数」のサブセクションでは、「ペインタが手続だからできること」を解説してる風。 ;四種類の「ペインタを生成する手続き」を引数で受け取って、 ;左上、左下、右上、右下に描画行うペインタの生成手続きを返却する。 ;(その手続は、引数として…

SICP §2.2.4(図形言語 その4 [ペインタの生成・変換])

前エントリの wave4 は、まず wave2 を定義してから、beside と絡めて生成しているが、wave2 を生成しなくても生成できたりする。 (define (flipped-paires painter) (let ((painter2 (beside painter (flip-vert painter)))) (below painter2 painter2))) (…

SICP §2.2.4(図形言語 その3 [何が理解できていないのか])

記述の仕方にホント悩む。どう書けば俺自身が理解できる進め方にできるだろうか。。 まだ、まとめきれてないが、とりあえずアップしちゃう。あとでまた追記します。 手を動かしてやってみよう。 この図形言語のセクションでは、次の「言語の機能」を使ってそ…

SICPの図形言語のセクションについて

図形言語のセクションがいまいちしっかりと理解できていない原因を考えてみた。 従来のセクションは、セクションの記述内容を読む、あるいは少しだけ手を動かしてみて、その上で問題を解けばほぼ理解できた。 が、今回のセクションはメインストリームがセク…

SICPの図形言語のセクション。。

やばい。。ちゃんと理解できてねぇ。。 参考書の該当セクションの内容、ちゃんと追った方がいいかな。。