From 5361a105fdcb097def20caa980b1956973810b94 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 25 Aug 2014 19:28:44 -0400 Subject: Add signal-let and signal-let* forms. * sly/signal.scm (signal-let, signal-let*): New macros. --- sly/signal.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sly/signal.scm b/sly/signal.scm index 41dddf2..a3e79c4 100644 --- a/sly/signal.scm +++ b/sly/signal.scm @@ -29,6 +29,7 @@ #:export (signal? make-signal define-signal + signal-let signal-let* hook->signal signal-ref signal-ref-maybe @@ -167,6 +168,17 @@ be coerced into one." ((_ name value) #'(define name (make-signal-maybe value)))))) +(define-syntax-rule (signal-let ((var signal) ...) body ...) + ((lambda (var ...) body ...) (signal-ref signal) ...)) + +(define-syntax signal-let* + (syntax-rules () + ((_ ((var signal)) body ...) + (signal-let ((var signal)) body ...)) + ((_ ((var signal) . rest) body ...) + (signal-let ((var signal)) + (signal-let* rest body ...))))) + ;;; ;;; Higher Order Signals ;;; -- cgit v1.2.3