----------------------------------------------------------------------------------------- -- | -- Module : FRP.Yampa.Time -- Copyright : (c) Antony Courtney and Henrik Nilsson, Yale University, 2003 -- License : BSD-style (see the LICENSE file in the distribution) -- -- Maintainer : ivan.perez@keera.co.uk -- Stability : provisional -- Portability : non-portable (GHC extensions) -- -- SF primitives that producing the current running time. -- -- Time is global for an 'SF', so, every constituent 'SF' will use the -- same global clock. However, when used in combination with -- 'FRP.Yampa.Switches.switch'ing, the SF switched into will be started at the -- time of switching, so any reference to 'localTime' or 'time' from that 'SF' -- will count using the time of switching as the start time. -- -- Take also into account that, because 'FRP.Yampa.Integration.derivative' is -- the derivative of a signal /over time/, derivating 'localTime' will always -- produce the value one (@1@). If you really, really, really need to know the -- time delta, and need to abandon the hybrid\/FRP abstraction, see -- 'FRP.Yampa.Integration.iterFrom'. ----------------------------------------------------------------------------------------- module FRP.Yampa.Time ( localTime, -- :: SF a Time time, -- :: SF a Time, Other name for localTime. ) where import Control.Arrow import FRP.Yampa.InternalCore (SF, Time) import FRP.Yampa.Basic (constant) import FRP.Yampa.Integration (integral) -- | Outputs the time passed since the signal function instance was started. localTime :: SF a Time localTime = constant 1.0 >>> integral -- | Alternative name for localTime. time :: SF a Time time = localTime -- Vim modeline -- vim:set tabstop=8 expandtab: