module Data.EventList.Relative.MixedBody
(consBody, consTime, (/.), (./), empty,
viewTimeL, viewBodyL,
switchTimeL, switchBodyL,
mapTimeL, mapTimeHead, mapTimeTail,
) where
import Data.EventList.Relative.TimeBody (empty)
import qualified Data.EventList.Relative.TimeBody as TimeBodyList
import qualified Data.EventList.Relative.BodyBody as BodyBodyList
import qualified Data.EventList.Relative.TimeBodyPrivate as TimeBodyPriv
import qualified Data.EventList.Relative.BodyBodyPrivate as BodyBodyPriv
import Data.EventList.Relative.TimeBodyPrivate (mapTimeL, mapTimeHead, mapTimeTail,)
import qualified Data.AlternatingList.List.Mixed as Mixed
import Data.Tuple.HT (mapSnd, )
consBody, (./) :: body -> TimeBodyList.T time body -> BodyBodyList.T time body
consBody :: forall body time. body -> T time body -> T time body
consBody body
b = forall time body. T time body -> T time body
BodyBodyPriv.Cons forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall b a. b -> T a b -> T a b
Mixed.consSecond body
b forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
TimeBodyPriv.decons
consTime, (/.) :: time -> BodyBodyList.T time body -> TimeBodyList.T time body
consTime :: forall time body. time -> T time body -> T time body
consTime time
t = forall time body. T time body -> T time body
TimeBodyPriv.Cons forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. a -> T a b -> T a b
Mixed.consFirst time
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
BodyBodyPriv.decons
infixr 5 /. , ./
./ :: forall body time. body -> T time body -> T time body
(./) = forall body time. body -> T time body -> T time body
consBody
/. :: forall time body. time -> T time body -> T time body
(/.) = forall time body. time -> T time body -> T time body
consTime
viewTimeL :: TimeBodyList.T time body -> Maybe (time, BodyBodyList.T time body)
viewTimeL :: forall time body. T time body -> Maybe (time, T time body)
viewTimeL =
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall b c a. (b -> c) -> (a, b) -> (a, c)
mapSnd forall time body. T time body -> T time body
BodyBodyPriv.Cons) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. T a b -> Maybe (a, T a b)
Mixed.viewFirstL forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
TimeBodyPriv.decons
viewBodyL :: BodyBodyList.T time body -> (body, TimeBodyList.T time body)
viewBodyL :: forall time body. T time body -> (body, T time body)
viewBodyL = forall b c a. (b -> c) -> (a, b) -> (a, c)
mapSnd forall time body. T time body -> T time body
TimeBodyPriv.Cons forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. T a b -> (b, T a b)
Mixed.viewSecondL forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
BodyBodyPriv.decons
{-# INLINE switchTimeL #-}
switchTimeL :: a -> (time -> BodyBodyList.T time body -> a) -> TimeBodyList.T time body -> a
switchTimeL :: forall a time body.
a -> (time -> T time body -> a) -> T time body -> a
switchTimeL a
f time -> T time body -> a
g =
forall c a b. c -> (a -> T a b -> c) -> T a b -> c
Mixed.switchFirstL a
f (\time
t -> time -> T time body -> a
g time
t forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
BodyBodyPriv.Cons) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
TimeBodyPriv.decons
{-# INLINE switchBodyL #-}
switchBodyL :: (body -> TimeBodyList.T time body -> a) -> BodyBodyList.T time body -> a
switchBodyL :: forall body time a. (body -> T time body -> a) -> T time body -> a
switchBodyL body -> T time body -> a
f =
forall b a c. (b -> T a b -> c) -> T a b -> c
Mixed.switchSecondL (\body
b -> body -> T time body -> a
f body
b forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
TimeBodyPriv.Cons) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall time body. T time body -> T time body
BodyBodyPriv.decons