From e39cf322b25a8ffd9f0fc3f3d85370802740528f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 29 Aug 2018 07:58:35 -0400 Subject: scripting: Add repeat macro. * chickadee/scripting.scm (repeat): New syntax. --- chickadee/scripting.scm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/chickadee/scripting.scm b/chickadee/scripting.scm index d88e422..ff65e86 100644 --- a/chickadee/scripting.scm +++ b/chickadee/scripting.scm @@ -22,6 +22,7 @@ #:use-module (chickadee scripting channel) #:use-module (chickadee scripting script) #:export (forever + repeat sleep tween) #:replace (sleep)) @@ -41,6 +42,13 @@ "Evaluate BODY in an endless loop." (while #t body ...)) +(define-syntax-rule (repeat n body ...) + "Evaluate BODY N times." + (let loop ((i 0)) + (when (< i n) + body ... + (loop (+ i 1))))) + (define (sleep duration) "Wait DURATION before resuming the current script." ;; Capture the current agenda before suspending the script so that -- cgit v1.2.3