問題解析

どうも segments->painter が戻す手続きが微妙な模様。
# てか stack trace 見たらそこっちゃソコなんですが

(define (segments->painter segment-list)
 (lambda (frame)
   (for-each
    (lambda (segment)
      (draw-line
       ((frame-coord-map frame) (start-segment segment))
       ((frame-coord-map frame) (end-segment segment))))
    segment-list)))

戻す手続きが呼び出される時、segment-list が # のリストになっている模様。for-each の直前で (print segment-list) してみたら

(# # # # # # # # # # # # # # # # #)

みたいな出力。

ちなみに

上記の手続き呼び出す部分は以下なカンジ。

 (define l1 (make-segment (make-vect 0.0 0.5) (make-vect 0.2 0.3)))
 (define l2 (make-segment (make-vect 0.2 0.3) (make-vect 0.3 0.5)))
 (define l3 (make-segment (make-vect 0.3 0.5) (make-vect 0.4 0.4)))
 (define l4 (make-segment (make-vect 0.4 0.4) (make-vect 0.3 0.0)))
 (define l5 (make-segment (make-vect 0.4 0.0) (make-vect 0.5 0.2)))
 (define l6 (make-segment (make-vect 0.5 0.2) (make-vect 0.6 0.0)))

 (define l7 (make-segment (make-vect 0.7 0.0) (make-vect 0.6 0.4)))
 (define l8 (make-segment (make-vect 0.6 0.4) (make-vect 1.0 0.3)))

 (define l9 (make-segment (make-vect 1.0 0.4) (make-vect 0.7 0.6)))
 (define la (make-segment (make-vect 0.7 0.6) (make-vect 0.6 0.6)))
 (define lb (make-segment (make-vect 0.6 0.6) (make-vect 0.7 0.8)))
 (define lc (make-segment (make-vect 0.7 0.8) (make-vect 0.6 1.0)))

 (define ld (make-segment (make-vect 0.4 1.0) (make-vect 0.3 0.8)))
 (define le (make-segment (make-vect 0.3 0.8) (make-vect 0.4 0.6)))
 (define lf (make-segment (make-vect 0.4 0.6) (make-vect 0.3 0.6)))
 (define lg (make-segment (make-vect 0.3 0.6) (make-vect 0.2 0.5)))
 (define lh (make-segment (make-vect 0.2 0.5) (make-vect 0.0 0.8)))

 (define p (segments->painter (list l1 l2 l3 l4 l5 l6 l7 l8 l9 la lb
lc ld le lf lg lh)))
 (define f (make-frame (make-vect -1.0 -1.0)
                       (make-vect 2.0 0)
                       (make-vect 0 2.0)))
 (p f)

む。for-each の前じゃなくて lambda 式の前に print 入れたらどうなる? という事で試してみたらやはり # なリストが出力される。これ、もしかして手続きの中で define しているのが微妙だったりするのか。
で、let で、な実装にしたら出力されました。

(define (stub-proc)
  (let ((l1 (make-segment (make-vect 0.0 0.5) (make-vect 0.2 0.3)))
	(l2 (make-segment (make-vect 0.2 0.3) (make-vect 0.3 0.5)))
	(l3 (make-segment (make-vect 0.3 0.5) (make-vect 0.4 0.4)))
	(l4 (make-segment (make-vect 0.4 0.4) (make-vect 0.3 0.0)))
	(l5 (make-segment (make-vect 0.4 0.0) (make-vect 0.5 0.2)))
	(l6 (make-segment (make-vect 0.5 0.2) (make-vect 0.6 0.0)))

	(l7 (make-segment (make-vect 0.7 0.0) (make-vect 0.6 0.4)))
	(l8 (make-segment (make-vect 0.6 0.4) (make-vect 1.0 0.3)))

	(l9 (make-segment (make-vect 1.0 0.4) (make-vect 0.7 0.6)))
	(la (make-segment (make-vect 0.7 0.6) (make-vect 0.6 0.6)))
	(lb (make-segment (make-vect 0.6 0.6) (make-vect 0.7 0.8)))
	(lc (make-segment (make-vect 0.7 0.8) (make-vect 0.6 1.0)))

	(ld (make-segment (make-vect 0.4 1.0) (make-vect 0.3 0.8)))
	(le (make-segment (make-vect 0.3 0.8) (make-vect 0.4 0.6)))
	(lf (make-segment (make-vect 0.4 0.6) (make-vect 0.3 0.6)))
	(lg (make-segment (make-vect 0.3 0.6) (make-vect 0.2 0.5)))
	(lh (make-segment (make-vect 0.2 0.5) (make-vect 0.0 0.8))))
    (let ((p (segments->painter (list l1 l2 l3 l4 l5 l6 l7 l8 l9 la lb
				      lc ld le lf lg lh)))
	  (f (make-frame (make-vect -1.0 -1.0)
			 (make-vect 2.0 0)
			 (make-vect 0 2.0))))
      (p f))))

とほほ。てか何故に define 使ってたのかと小一時間 (ry
wave くんは無事に出力されております。