module Control.Wire.Time
(
time,
timeF,
timeFrom
)
where
import Control.Wire.Core
import Control.Wire.Session
time :: (HasTime t s) => Wire s e m a t
time :: Wire s e m a t
time = t -> Wire s e m a t
forall t s e (m :: * -> *) a. HasTime t s => t -> Wire s e m a t
timeFrom 0
timeF :: (Fractional b, HasTime t s, Monad m) => Wire s e m a b
timeF :: Wire s e m a b
timeF = (t -> b) -> Wire s e m a t -> Wire s e m a b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap t -> b
forall a b. (Real a, Fractional b) => a -> b
realToFrac Wire s e m a t
forall t s e (m :: * -> *) a. HasTime t s => Wire s e m a t
time
timeFrom :: (HasTime t s) => t -> Wire s e m a t
timeFrom :: t -> Wire s e m a t
timeFrom t' :: t
t' =
(s -> a -> (t, Wire s e m a t)) -> Wire s e m a t
forall s a b e (m :: * -> *).
Monoid s =>
(s -> a -> (b, Wire s e m a b)) -> Wire s e m a b
mkSF ((s -> a -> (t, Wire s e m a t)) -> Wire s e m a t)
-> (s -> a -> (t, Wire s e m a t)) -> Wire s e m a t
forall a b. (a -> b) -> a -> b
$ \ds :: s
ds _ ->
let t :: t
t = t
t' t -> t -> t
forall a. Num a => a -> a -> a
+ s -> t
forall t s. HasTime t s => s -> t
dtime s
ds
in (t, Wire s e m a t) -> (t, Wire s e m a t)
forall a b. (a, b) -> (a, b)
lstrict (t
t, t -> Wire s e m a t
forall t s e (m :: * -> *) a. HasTime t s => t -> Wire s e m a t
timeFrom t
t)