diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-02-17 18:44:15 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-02-17 18:44:15 -0500 |
commit | 64de4d1bfe1a2d67b8aa3e846d8d86760682b395 (patch) | |
tree | e97b854cb3cf065c2e9c3fd7c377cdb563fc2201 /2d/time.scm | |
parent | 67ee61d144eff51fa3981812925bd7ca1a852368 (diff) |
Move time module inside the signal module.
* 2d/signal.scm (make-boxed-signal, %signal-ref, %signal-set!): Don't
export.
(signal-sample, signal-delay, signal-throttle): New procedures.
* 2d/time.scm: Delete file.
Diffstat (limited to '2d/time.scm')
-rw-r--r-- | 2d/time.scm | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/2d/time.scm b/2d/time.scm deleted file mode 100644 index e17be49..0000000 --- a/2d/time.scm +++ /dev/null @@ -1,54 +0,0 @@ -;;; guile-2d -;;; Copyright (C) 2013 David Thompson <dthompson2@worcester.edu> -;;; -;;; Guile-2d is free software: you can redistribute it and/or modify it -;;; under the terms of the GNU Lesser General Public License as -;;; published by the Free Software Foundation, either version 3 of the -;;; License, or (at your option) any later version. -;;; -;;; Guile-2d is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;;; Lesser General Public License for more details. -;;; -;;; You should have received a copy of the GNU Lesser General Public -;;; License along with this program. If not, see -;;; <http://www.gnu.org/licenses/>. - -;;; Commentary: -;; -;; Time-based signals. -;; -;;; Code: - -(define-module (2d time) - #:use-module (2d agenda) - #:use-module (2d coroutine) - #:use-module (2d signals) - #:export (time-every - time-each - time-delay)) - -(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)))) - (define (tick) - (signal-set! ticker (signal-ref-maybe value))) - (schedule-interval agenda tick delay) - ticker)) - -(define (time-each agenda value) - "Create a new signal that emits VALUE every agenda update." - (time-every agenda 1 value)) - -(define (time-delay agenda delay signal) - "Create a new signal that delays propagation of values received from -SIGNAL by DELAY ticks of AGENDA." - (make-signal (signal-ref signal) - (colambda (self from) - (let ((value (signal-ref from))) - (wait agenda delay) - (signal-set! self value))) - (list signal))) |