module Data.EventList.Relative.MixedTime
(consBody, consTime, (/.), (./), empty,
viewTimeL, viewBodyL,
switchTimeL, switchBodyL,
mapTimeL, mapTimeHead, mapTimeTail,
mapBodyL, mapBodyHead, mapBodyTail,
) where
import qualified Data.EventList.Relative.BodyTimePrivate as BodyTimePriv
import Data.EventList.Relative.TimeTimePrivate as TimeTimePriv
import qualified Data.EventList.Relative.BodyTime as BodyTimeList
import qualified Data.EventList.Relative.TimeTime as TimeTimeList
import Data.EventList.Relative.BodyTime (empty)
import qualified Data.AlternatingList.List.Mixed as Mixed
import Data.Tuple.HT (mapSnd, )
import Prelude hiding
(null, foldr, map, filter, concat, cycle, sequence, sequence_, mapM, mapM_)
infixr 5 /. , ./
(./) :: body -> TimeTimeList.T time body -> BodyTimeList.T time body
(./) = consBody
(/.) :: time -> BodyTimeList.T time body -> TimeTimeList.T time body
(/.) = consTime
mapBodyL ::
(body -> body, TimeTimeList.T time0 body -> TimeTimeList.T time1 body) ->
BodyTimeList.T time0 body -> BodyTimeList.T time1 body
mapBodyL = BodyTimePriv.lift . Mixed.mapFirstL . mapSnd TimeTimePriv.unlift
mapBodyHead ::
(body -> body) ->
BodyTimeList.T time body -> BodyTimeList.T time body
mapBodyHead = BodyTimePriv.lift . Mixed.mapFirstHead
mapBodyTail ::
(TimeTimeList.T time0 body -> TimeTimeList.T time1 body) ->
BodyTimeList.T time0 body -> BodyTimeList.T time1 body
mapBodyTail = BodyTimePriv.lift . Mixed.mapFirstTail . TimeTimePriv.unlift