{- | Copyright : (c) Henning Thielemann 2007 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 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 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