継続マラソン2

;; ネタが見つからなかったので forループなんていかがでしょう
(define (for-loop max)
  (let ((i 0) (cont #f))
    (if (> max (call/cc (lambda (c) (set! cont c) i)))
        (begin
          (p i)
          (set! i (+ i 1))
          (cont i)))))

(for-loop 5)

setjmp/longjmp的な使いかたは心得てきた気がする。
何か良いネタがあったりとか、間違っているよなどの御意見をお待ちしています。
そろそろ継続渡しにチャレンジ?