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

32 lines
651 B
Scheme
Raw Permalink Normal View History

(library
(loops)
2017-12-20 14:01:17 +05:30
(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 20:32:10 +05:30
(loop (+ 1 var)))))))
2017-12-20 14:01:17 +05:30
(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 20:32:10 +05:30
(define-syntax while
(syntax-rules ()
((_ (var exp) body ...)
(let loop ((var exp))
(when var
(begin body ...)
(loop exp))))))
)