SICP §2.2.4(図形言語 その5 [高階関数としてのペインタの扱い])
次の「高階関数」のサブセクションでは、「ペインタが手続だからできること」を解説してる風。
;四種類の「ペインタを生成する手続き」を引数で受け取って、 ;左上、左下、右上、右下に描画行うペインタの生成手続きを返却する。 ;(その手続は、引数として「基本となるペインタ」を1つ受け取る。) (define (square-of-four tl tr bl br) (lambda (painter) (let ((top (beside (tl painter) (tr painter))) (bottom (beside (bl painter) (br painter)))) (below bottom top)))) ;square-of-four を使って、flipped-pairs を再定義してみる。 ;(※square-of-four の第1引数と第3引数の identity は、 ; 多分受け取ったペインタをそのまま返却する手続な気がする。) (define (flipped-pairs painter) (let ((combine4 (square-of-four identity flip-vert identity flip-vert))) (combine4 (corner-split painter n)))) ;square-of-four を使って、square-limit を再定義してみる。 ;rotate180 は多分180度回転させる手続。今んとこ未定義。 (define (square-limit painter n) (let ((combine4 (square-of-four flip-horiz identity rotate180 flip-vert))) (combine4 (corner-split painter n))))
疑問点
今回の箇所での疑問点は、単純に定義のない手続がでてきただけだな。
後の「問題」で自分たちで定義するんかねぇ?
・identity 手続の定義がない。
・rotate180 手続の定義がない。
続いて「問題 2.45」があり、その後『フレーム』に関するサブセクションが始まる。