32 lines
651 B
Scheme
Raw Normal View History

(library
(loops)
2017-12-20 08:31:17 +00:00
(export upto from-to while)
(import (rnrs))
(define-syntax upto
(syntax-rules ()
((_ (var count) body ...)
(let loop ((var 0))
(when (< var count)
(begin body ...)
2017-08-18 16:02:10 +01:00
(loop (+ 1 var)))))))
2017-12-20 08:31:17 +00:00
(define-syntax from-to
(syntax-rules ()
((_ (var f t step) b1 b2 ...)
(let loop ((var f))
(unless (= var t)
b1 b2 ...
(loop (+ var step)))))))
2017-08-18 16:02:10 +01:00
(define-syntax while
(syntax-rules ()
((_ (var exp) body ...)
(let loop ((var exp))
(when var
(begin body ...)
(loop exp))))))
)