From 21ff408c45685afacd3c0fffb3f81c46e9b00874 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 6 Feb 2014 20:49:28 -0500 Subject: Remove dynamic scoping of agendas. * 2d/agenda.scm: (*global-agenda*, current-agenda, with-agenda): Delete. (agenda?, agenda-time): Export. (schedule-every, schedule-each): Rename schedule-every to schedule-each. (schedule-next): Delete. * 2d/game.scm: (game-agenda): New variable. (update): Tick game-agenda. * 2d/repl.scm: Use new agenda API. * 2d/sprite.scm: Use new agenda API. * 2d/time.scm: (time-every, time-each, time-delay): Change signature and use new agenda API. * examples/coroutine.scm: Use new agenda API. * examples/particles.scm: Use new agenda API. --- 2d/time.scm | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to '2d/time.scm') diff --git a/2d/time.scm b/2d/time.scm index f39bc0e..e17be49 100644 --- a/2d/time.scm +++ b/2d/time.scm @@ -29,27 +29,26 @@ time-each time-delay)) -(define (time-every ticks value) - "Create a new signal that emits VALUE every TICKS agenda updates. VALUE may -be a signal, in which case the stored value of the signal will be -emitted." +(define (time-every agenda delay value) + "Create a new signal that emits VALUE every DELAY ticks of AGENDA. +VALUE may be a signal, in which case the stored value of the signal +will be emitted." (let ((ticker (make-root-signal (signal-ref-maybe value)))) - (schedule-interval - (lambda () - (signal-set! ticker (signal-ref-maybe value))) - ticks) + (define (tick) + (signal-set! ticker (signal-ref-maybe value))) + (schedule-interval agenda tick delay) ticker)) -(define (time-each value) +(define (time-each agenda value) "Create a new signal that emits VALUE every agenda update." - (time-every 1 value)) + (time-every agenda 1 value)) -(define (time-delay ticks signal) +(define (time-delay agenda delay signal) "Create a new signal that delays propagation of values received from -SIGNAL by TICKS agenda updates." +SIGNAL by DELAY ticks of AGENDA." (make-signal (signal-ref signal) (colambda (self from) (let ((value (signal-ref from))) - (wait ticks) + (wait agenda delay) (signal-set! self value))) (list signal))) -- cgit v1.2.3