thin-provisioning-tools/functional-tests/loops.scm

32 lines
651 B
Scheme

(library
(loops)
(export upto from-to while)
(import (rnrs))
(define-syntax upto
(syntax-rules ()
((_ (var count) body ...)
(let loop ((var 0))
(when (< var count)
(begin body ...)
(loop (+ 1 var)))))))
(define-syntax from-to
(syntax-rules ()
((_ (var f t step) b1 b2 ...)
(let loop ((var f))
(unless (= var t)
b1 b2 ...
(loop (+ var step)))))))
(define-syntax while
(syntax-rules ()
((_ (var exp) body ...)
(let loop ((var exp))
(when var
(begin body ...)
(loop exp))))))
)