{- | Copyright : (c) Henning Thielemann 2007-2009 Maintainer : haskell@henning-thielemann.de Stability : stable Portability : Haskell 98 -} module Data.EventList.Absolute.TimeBodyPrivate where import qualified Data.AlternatingList.List.Disparate as Disp -- import qualified Data.AlternatingList.List.Uniform as Uniform -- import qualified Data.AlternatingList.List.Mixed as Mixed import qualified Control.Monad as Monad import qualified Control.Applicative as Applicative import Control.Applicative (Applicative, ) newtype T time body = Cons {decons :: Disp.T time body} deriving (Eq, Ord, Show) infixl 5 $~ ($~) :: (Disp.T time body -> a) -> (T time body -> a) ($~) f = f . decons lift :: (Disp.T time0 body0 -> Disp.T time1 body1) -> (T time0 body0 -> T time1 body1) lift f = Cons . f . decons liftA :: Applicative m => (Disp.T time0 body0 -> m (Disp.T time1 body1)) -> (T time0 body0 -> m (T time1 body1)) liftA f = Applicative.liftA Cons . f . decons liftM :: Monad m => (Disp.T time0 body0 -> m (Disp.T time1 body1)) -> (T time0 body0 -> m (T time1 body1)) liftM f = Monad.liftM Cons . f . decons