module FRP.Timeless.Prefab.Utils
where
import Control.Arrow
import Control.Applicative
import Data.Monoid
import Control.Monad
import Control.Monad.IO.Class
import FRP.Timeless.Signal
import FRP.Timeless.Session
import FRP.Timeless.Prefab.Primitive
time :: (HasTime t s) => Signal s m a t
time = timeFrom 0
timeF :: (Fractional b, HasTime t s, Monad m) => Signal s m a b
timeF = fmap realToFrac time
timeFrom :: (HasTime t s) => t -> Signal s m a t
timeFrom t' =
mkSF $ \ds _ ->
let t = t' + dtime ds
in lstrict (t, timeFrom t)
sDebug :: (MonadIO m) => Signal s m String ()
sDebug = mkKleisli_ $ \s -> liftIO $ putStr s