ようやく図形言語にはいったんですけど、また図は書けないので残念です。
そういうわけでこのプログラムも動かせない。
(define (up-split painter n) (if (= n 0) painter (let ((smaller (up-split painter (- n 1)))) (below painter (beside smaller smaller)))))
追記
id:higeponが図形描画用のソースをおいてくれていました.
というわけでこれを使って確認。
確認するためにこんなラッパを作る。
ほとんど丸写しなんですけど、後々使い回せるようにpainterを適当にいじる関数を渡すようにした。
(define (make-display f) (lambda () (define monar (segments->painter segments)) (gl-clear GL_COLOR_BUFFER_BIT) (gl-color 0.0 0.0 0.0) (gl-begin GL_LINES) ((f monar) frame) (gl-end) (gl-flush) ) )
ヤケになったので、mainも作る。
(define (make-main callback) (lambda (args) (glut-init args) (glut-init-display-mode GLUT_RGBA) (glut-init-window-size 350 240) (glut-create-window "picture language sample") (glut-display-func callback) (init) (glut-main-loop) ) ) (define main (make-main (make-display (lambda (monar) (up-split monar 4)))))
こんな感じのモナーができたよ!