scripting: Add repeat macro.
authorDavid Thompson <dthompson2@worcester.edu>
Wed, 29 Aug 2018 11:58:35 +0000 (07:58 -0400)
committerDavid Thompson <dthompson2@worcester.edu>
Wed, 29 Aug 2018 11:58:35 +0000 (07:58 -0400)
* chickadee/scripting.scm (repeat): New syntax.

chickadee/scripting.scm

index d88e422..ff65e86 100644 (file)
@@ -22,6 +22,7 @@
   #:use-module (chickadee scripting channel)
   #:use-module (chickadee scripting script)
   #:export (forever
+            repeat
             sleep
             tween)
   #:replace (sleep))
   "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