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 = T time body -> T time body
forall time body. T time body -> T time body
BodyBodyPriv.Cons (T time body -> T time body)
-> (T time body -> T time body) -> T time body -> T time body
forall b c a. (b -> c) -> (a -> b) -> a -> c
. body -> T time body -> T time body
forall b a. b -> T a b -> T a b
Mixed.consSecond body
b (T time body -> T time body)
-> (T time body -> T time body) -> T time body -> T time body
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
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 = T time body -> T time body
forall time body. T time body -> T time body
TimeBodyPriv.Cons (T time body -> T time body)
-> (T time body -> T time body) -> T time body -> T time body
forall b c a. (b -> c) -> (a -> b) -> a -> c
. time -> T time body -> T time body
forall a b. a -> T a b -> T a b
Mixed.consFirst time
t (T time body -> T time body)
-> (T time body -> T time body) -> T time body -> T time body
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
forall time body. T time body -> T time body
BodyBodyPriv.decons
infixr 5 /. , ./
./ :: forall body time. body -> T time body -> T time body
(./) = 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
(/.) = 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 =
((time, T time body) -> (time, T time body))
-> Maybe (time, T time body) -> Maybe (time, T time body)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((T time body -> T time body)
-> (time, T time body) -> (time, T time body)
forall b c a. (b -> c) -> (a, b) -> (a, c)
mapSnd T time body -> T time body
forall time body. T time body -> T time body
BodyBodyPriv.Cons) (Maybe (time, T time body) -> Maybe (time, T time body))
-> (T time body -> Maybe (time, T time body))
-> T time body
-> Maybe (time, T time body)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> Maybe (time, T time body)
forall a b. T a b -> Maybe (a, T a b)
Mixed.viewFirstL (T time body -> Maybe (time, T time body))
-> (T time body -> T time body)
-> T time body
-> Maybe (time, T time body)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
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 = (T time body -> T time body)
-> (body, T time body) -> (body, T time body)
forall b c a. (b -> c) -> (a, b) -> (a, c)
mapSnd T time body -> T time body
forall time body. T time body -> T time body
TimeBodyPriv.Cons ((body, T time body) -> (body, T time body))
-> (T time body -> (body, T time body))
-> T time body
-> (body, T time body)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> (body, T time body)
forall a b. T a b -> (b, T a b)
Mixed.viewSecondL (T time body -> (body, T time body))
-> (T time body -> T time body)
-> T time body
-> (body, T time body)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
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 =
a -> (time -> T time body -> a) -> T time body -> a
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 (T time body -> a)
-> (T time body -> T time body) -> T time body -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
forall time body. T time body -> T time body
BodyBodyPriv.Cons) (T time body -> a)
-> (T time body -> T time body) -> T time body -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
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 =
(body -> T time body -> a) -> T time body -> a
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 (T time body -> a)
-> (T time body -> T time body) -> T time body -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
forall time body. T time body -> T time body
TimeBodyPriv.Cons) (T time body -> a)
-> (T time body -> T time body) -> T time body -> a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. T time body -> T time body
forall time body. T time body -> T time body
BodyBodyPriv.decons