call from (eightsync agenda)
[8sync.git] / loopy.scm
index 55e3da73650f45368295a07bd33585af5e747431..ca133b9f79d525825d31d6f90381fa0741683f83 100644 (file)
--- a/loopy.scm
+++ b/loopy.scm
@@ -1,4 +1,4 @@
-(define-module (loopy agenda)
+(define-module (eightsync agenda)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
@@ -33,6 +33,8 @@
             schedule-segments-split schedule-extract-until!
             add-segments-contents-to-queue!
 
+            %sync 8sync %sync-at 8sync-at %sync-delay 8sync-delay
+
             <run-request>
             make-run-request run-request?
             run-request-proc run-request-when
@@ -389,22 +391,45 @@ Will produce (0 . 0) instead of a negative number, if needed."
    (make-future call-first on-success on-fail on-error)
    when))
 
-(define-syntax-rule (async body args ...)
+(define-syntax-rule (%sync body args ...)
+  "Run BODY asynchronously at a prompt, passing args to make-future.
+
+Pronounced `async' despite the spelling.
+
+%sync was chosen because (async) was already taken and could lead to
+errors, and this version of asynchronous code uses a prompt, so the `a'
+character becomes a `%' prompt! :)
+
+The % and 8 characters kind of look similar... hence this library's
+name!  (There are 8sync aliases if you prefer that name.)"
   (abort-to-prompt (current-agenda-prompt)
                    (wrap body)
                    args ...))
 
-(define-syntax-rule (async-at body when args ...)
+(define-syntax-rule (%sync-at body when args ...)
   (abort-to-prompt (current-agenda-prompt)
                    (wrap body)
-                   (append (list #:when when)
-                           args ...)))
+                   #:when when
+                   args ...))
 
-(define-syntax-rule (async-delay body delay-time args ...)
+(define-syntax-rule (%sync-delay body delay-time args ...)
   (abort-to-prompt (current-agenda-prompt)
                    (wrap body)
-                   (append (list #:when (tdelta delay-time))
-                           args ...)))
+                   #:when (tdelta delay-time)
+                   args ...))
+
+(define-syntax-rule (8sync args ...)
+  "Alias for %sync"
+  (%sync args ...))
+
+(define-syntax-rule (8sync-at args ...)
+  "Alias for %sync-at"
+  (%sync-at args ...))
+
+(define-syntax-rule (8sync-delay args ...)
+  "Alias for %sync-delay"
+  (8sync-delay args ...))
+
 
 \f
 ;;; Execution of agenda, and current agenda