for

Scheme だとあまり使う場面はないだろうけど、普通の for 文が使いたかったので書いた。一応残しておく。

(define-syntax for
  (syntax-rules ()
    ((_ (var start end) body ...)
     (do ((var start (+ 1 var)))
         ((= var end))
       body ...))))

実行例。

gosh> (for (i 0 10) (format #t "~d " i))
0 1 2 3 4 5 6 7 8 9 10 #t

Emacs できれいにインデントしたい場合は、.eamcs などで

(put 'for 'scheme-indent-function 1)

しておく。