packages feed

event-list 0.0.9.1 → 0.0.10

raw patch · 14 files changed

+277/−84 lines, 14 filesdep +special-functorsPVP ok

version bump matches the API change (PVP)

Dependencies added: special-functors

API changes (from Hackage documentation)

+ Data.EventList.Absolute.TimeBody: traverse :: (Applicative m) => (time0 -> m time1) -> (body0 -> m body1) -> T time0 body0 -> m (T time1 body1)
+ Data.EventList.Absolute.TimeBody: traverseBody :: (Applicative m) => (body0 -> m body1) -> T time body0 -> m (T time body1)
+ Data.EventList.Absolute.TimeBody: traverseTime :: (Applicative m) => (time0 -> m time1) -> T time0 body -> m (T time1 body)
+ Data.EventList.Absolute.TimeBody: traverse_ :: (Applicative m) => (time -> m ()) -> (body -> m ()) -> T time body -> m ()
+ Data.EventList.Absolute.TimeTime: traverse :: (Applicative m) => (time0 -> m time1) -> (body0 -> m body1) -> T time0 body0 -> m (T time1 body1)
+ Data.EventList.Absolute.TimeTime: traverseBody :: (Applicative m) => (body0 -> m body1) -> T time body0 -> m (T time body1)
+ Data.EventList.Absolute.TimeTime: traverseTime :: (Applicative m) => (time0 -> m time1) -> T time0 body -> m (T time1 body)
+ Data.EventList.Absolute.TimeTime: traverse_ :: (Applicative m) => (time -> m ()) -> (body -> m ()) -> T time body -> m ()
+ Data.EventList.Relative.BodyTime: traverse :: (Applicative m) => (time0 -> m time1) -> (body0 -> m body1) -> T time0 body0 -> m (T time1 body1)
+ Data.EventList.Relative.TimeBody: traverse :: (Applicative m) => (time0 -> m time1) -> (body0 -> m body1) -> T time0 body0 -> m (T time1 body1)
+ Data.EventList.Relative.TimeBody: traverseBody :: (Applicative m) => (body0 -> m body1) -> T time body0 -> m (T time body1)
+ Data.EventList.Relative.TimeBody: traverseTime :: (Applicative m) => (time0 -> m time1) -> T time0 body -> m (T time1 body)
+ Data.EventList.Relative.TimeBody: traverse_ :: (Applicative m) => (time -> m ()) -> (body -> m ()) -> T time body -> m ()
+ Data.EventList.Relative.TimeBody: zipWithBody :: (body0 -> body1 -> body2) -> [body0] -> T time body1 -> T time body2
+ Data.EventList.Relative.TimeBody: zipWithTime :: (time0 -> time1 -> time2) -> [time0] -> T time1 body -> T time2 body
+ Data.EventList.Relative.TimeTime: traverse :: (Applicative m) => (time0 -> m time1) -> (body0 -> m body1) -> T time0 body0 -> m (T time1 body1)
+ Data.EventList.Relative.TimeTime: traverseBody :: (Applicative m) => (body0 -> m body1) -> T time body0 -> m (T time body1)
+ Data.EventList.Relative.TimeTime: traverseTime :: (Applicative m) => (time0 -> m time1) -> T time0 body -> m (T time1 body)
+ Data.EventList.Relative.TimeTime: traverse_ :: (Applicative m) => (time -> m ()) -> (body -> m ()) -> T time body -> m ()
+ Data.EventList.Relative.TimeTime: zipWithBody :: (body0 -> body1 -> body2) -> [body0] -> T time body1 -> T time body2
+ Data.EventList.Relative.TimeTime: zipWithTime :: (time0 -> time1 -> time2) -> (time0, [time0]) -> T time1 body -> T time2 body

Files

event-list.cabal view
@@ -1,5 +1,5 @@ Name:             event-list-Version:          0.0.9.1+Version:          0.0.10 License:          GPL License-File:     LICENSE Author:           Henning Thielemann <haskell@henning-thielemann.de>@@ -26,7 +26,7 @@ Source-Repository this   type:     darcs   location: http://darcs.haskell.org/event-list/-  tag:      0.0.9.1+  tag:      0.0.10  Flag splitBase   description: Choose the new smaller, split-up base package.@@ -42,7 +42,9 @@   If flag(splitBase)     Build-Depends: base >= 2 && <5   Else-    Build-Depends: base >= 1.0 && < 2+    Build-Depends:+      special-functors >= 1.0 && <1.1,+      base >= 1.0 && < 2    GHC-Options:      -Wall   Hs-Source-Dirs:   src
src/Data/AlternatingList/List/Disparate.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -13,9 +13,10 @@    (T,     fromPairList, toPairList,     map, mapFirst, mapSecond,+    zipWithFirst, zipWithSecond,     concatMonoid, concatMapMonoid,     sequence, sequence_,-    mapM, mapM_, mapFirstM, mapSecondM,+    traverse, traverse_, traverseFirst, traverseSecond,     getFirsts, getSeconds, length, genericLength,     empty, singleton, null,     cons, snoc, viewL, viewR, switchL, switchR, mapHead, mapLast,@@ -25,7 +26,6 @@     splitAt, take, drop,     genericSplitAt, genericTake, genericDrop,     spanFirst, spanSecond,-    zipWithFirst, zipWithSecond,    ) where  import Data.Tuple.HT (mapSnd, mapPair, )@@ -33,13 +33,17 @@ import qualified Data.List as List import qualified Data.List.HT as ListHT import qualified Control.Monad as Monad+import qualified Control.Applicative as Applicative+import qualified Data.Traversable as Trav++import Control.Applicative (Applicative, pure, ) import Data.Monoid (Monoid, mempty, mappend, )  import Test.QuickCheck (Arbitrary, arbitrary, coarbitrary)  import Prelude hiding    (null, foldr, map, concat, cycle, length, take, drop, splitAt,-    sequence, sequence_, mapM, mapM_)+    sequence, sequence_, )   data Pair a b =@@ -107,6 +111,15 @@ mapSecond g = lift (List.map (mapPairSecond g))  +zipWithFirst :: (a0 -> a1 -> a2) -> [a0] -> T a1 b -> T a2 b+zipWithFirst f xs =+   lift $ zipWith (\x (Pair a b) -> Pair (f x a) b) xs++zipWithSecond :: (b0 -> b1 -> b2) -> [b0] -> T a b1 -> T a b2+zipWithSecond f xs =+   lift $ zipWith (\x (Pair a b) -> Pair a (f x b)) xs++ concatMonoid :: Monoid m =>    T m m -> m concatMonoid =@@ -120,41 +133,41 @@    concatMonoid . map f g  -sequence :: Monad m =>+sequence :: Applicative m =>    T (m a) (m b) -> m (T a b) sequence =-   Monad.liftM Cons .-   Monad.mapM (\(Pair a b) -> Monad.liftM2 Pair a b) .+   Applicative.liftA Cons .+   Trav.traverse (\(Pair a b) -> Applicative.liftA2 Pair a b) .    decons -sequence_ :: (Monad m, Monoid d) =>+sequence_ :: (Applicative m, Monoid d) =>    T (m d) (m d) -> m d sequence_ =-   foldr (Monad.liftM2 mappend) (Monad.liftM2 mappend) $ return mempty---   Monad.mapM_ (\(Pair a b) -> Monad.liftM2 mappend a b) . decons+   foldr (Applicative.liftA2 mappend) (Applicative.liftA2 mappend) $ pure mempty+--   Trav.traverse_ (\(Pair a b) -> Applicative.liftA2 mappend a b) . decons  -mapM :: Monad m =>+traverse :: Applicative m =>    (a0 -> m a1) -> (b0 -> m b1) ->    T a0 b0 -> m (T a1 b1)-mapM aAction bAction =+traverse aAction bAction =    sequence . map aAction bAction -mapM_ :: (Monad m, Monoid d) =>+traverse_ :: (Applicative m, Monoid d) =>    (a -> m d) -> (b -> m d) -> T a b -> m d-mapM_ aAction bAction =+traverse_ aAction bAction =    sequence_ . map aAction bAction  -mapFirstM :: Monad m =>+traverseFirst :: Applicative m =>    (a0 -> m a1) -> T a0 b -> m (T a1 b)-mapFirstM aAction =-   mapM aAction return+traverseFirst aAction =+   traverse aAction pure -mapSecondM :: Monad m =>+traverseSecond :: Applicative m =>    (b0 -> m b1) -> T a b0 -> m (T a b1)-mapSecondM bAction =-   mapM return bAction+traverseSecond bAction =+   traverse pure bAction   getFirsts :: T a b -> [a]@@ -290,11 +303,3 @@           viewBodyL)       empty -}--zipWithFirst :: (a0 -> a1 -> a2) -> [a0] -> T a1 b -> T a2 b-zipWithFirst f xs =-   Cons . zipWith (\x (Pair a b) -> Pair (f x a) b) xs . decons--zipWithSecond :: (b0 -> b1 -> b2) -> [b0] -> T a b1 -> T a b2-zipWithSecond f xs =-   Cons . zipWith (\x (Pair a b) -> Pair a (f x b)) xs . decons
src/Data/AlternatingList/List/Mixed.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -39,7 +39,7 @@ import Data.Tuple.HT (mapFst, mapSnd, mapPair, )  import Prelude hiding-   (null, foldr, map, concat, sequence, sequence_, mapM, mapM_)+   (null, foldr, map, concat, sequence, sequence_, )   infixr 5 ./, /.
src/Data/AlternatingList/List/Uniform.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -12,9 +12,10 @@ module Data.AlternatingList.List.Uniform    (T(Cons),     map, mapFirst, mapSecond,+    zipWithFirst, zipWithSecond,     concatMonoid, concatMapMonoid,     sequence, sequence_,-    mapM, mapM_, mapFirstM, mapSecondM,+    traverse, traverse_, traverseFirst, traverseSecond,     getFirsts, getSeconds, length, genericLength,     fromFirstList, fromSecondList, fromEitherList,     singleton, isSingleton,@@ -32,9 +33,10 @@ import qualified Data.AlternatingList.List.Disparate as Disp  import qualified Control.Monad as Monad+import qualified Control.Applicative as Applicative import qualified Data.List as List -import Control.Monad (Monad, return, )+import Control.Applicative (Applicative, pure, ) import Data.Monoid (Monoid, mempty, mappend, )  import Test.QuickCheck (Arbitrary, arbitrary, coarbitrary)@@ -50,7 +52,7 @@     Eq, Ord, Show, (>)) -} import Prelude hiding-   (null, foldr, map, concat, length, sequence, sequence_, mapM, mapM_)+   (null, foldr, map, concat, length, sequence, sequence_, )   {- |@@ -94,7 +96,16 @@ mapSecond g (Cons b xs) = Cons (g b) (Disp.mapSecond g xs)  +zipWithFirst :: (a0 -> a1 -> a2) -> [a0] -> T a1 b -> T a2 b+zipWithFirst f xs (Cons a bs) =+   Cons a $ Disp.zipWithFirst f xs bs +zipWithSecond :: (b0 -> b1 -> b2) -> (b0,[b0]) -> T a b1 -> T a b2+zipWithSecond f (x,xs) (Cons a bs) =+   Cons (f x a) $ Disp.zipWithSecond f xs bs+++ concatMonoid :: Monoid m =>    T m m -> m concatMonoid =@@ -108,38 +119,38 @@    concatMonoid . map f g  -sequence :: Monad m =>+sequence :: Applicative m =>    T (m a) (m b) -> m (T a b) sequence (Cons b xs) =-   Monad.liftM2 Cons b (Disp.sequence xs)+   Applicative.liftA2 Cons b (Disp.sequence xs) -sequence_ :: (Monad m, Monoid d) =>+sequence_ :: (Applicative m, Monoid d) =>    T (m d) (m d) -> m d sequence_ (Cons b xs) =-   Monad.liftM2 mappend b $ Disp.sequence_ xs+   Applicative.liftA2 mappend b $ Disp.sequence_ xs  -mapM :: Monad m =>+traverse :: Applicative m =>    (a0 -> m a1) -> (b0 -> m b1) ->    T a0 b0 -> m (T a1 b1)-mapM aAction bAction =+traverse aAction bAction =    sequence . map aAction bAction -mapM_ :: (Monad m, Monoid d) =>+traverse_ :: (Applicative m, Monoid d) =>    (a -> m d) -> (b -> m d) -> T a b -> m d-mapM_ aAction bAction =+traverse_ aAction bAction =    sequence_ . map aAction bAction  -mapFirstM :: Monad m =>+traverseFirst :: Applicative m =>    (a0 -> m a1) -> T a0 b -> m (T a1 b)-mapFirstM aAction =-   mapM aAction return+traverseFirst aAction =+   traverse aAction pure -mapSecondM :: Monad m =>+traverseSecond :: Applicative m =>    (b0 -> m b1) -> T a b0 -> m (T a b1)-mapSecondM bAction =-   mapM return bAction+traverseSecond bAction =+   traverse pure bAction   getFirsts :: T a b -> [a]
src/Data/EventList/Absolute/TimeBody.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -13,6 +13,7 @@     getTimes, getBodies, duration,     mapBody, mapTime,     concatMapMonoid,+    traverse, traverse_, traverseBody, traverseTime,     mapM, mapM_, mapBodyM, mapTimeM,     merge, mergeBy, insert, insertBy,     moveForward,@@ -44,7 +45,10 @@ import Data.List.HT (isAscending, isAscendingLazy, ) import Data.Function.HT (compose2, ) import Data.EventList.Utility (beforeBy, )+ import qualified Control.Monad as Monad+import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), )+ import Control.Monad.Trans.State (state, evalState)  import Prelude hiding (mapM, mapM_, null, foldr, filter, concat, cycle)@@ -120,24 +124,47 @@ concatMapMonoid f g =    Disp.concatMapMonoid f g . decons ++traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse f g = liftA (Disp.traverse f g)++traverse_ :: Applicative m =>+   (time -> m ()) -> (body -> m ()) ->+   T time body -> m ()+traverse_ f g = Disp.traverse_ f g . decons+++traverseBody :: Applicative m =>+   (body0 -> m body1) -> T time body0 -> m (T time body1)+traverseBody f = liftA (Disp.traverseSecond f)++traverseTime :: Applicative m =>+   (time0 -> m time1) -> T time0 body -> m (T time1 body)+traverseTime f = liftA (Disp.traverseFirst f)++ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1)-mapM f g = liftM (Disp.mapM f g)+mapM f g =+   unwrapMonad . traverse (WrapMonad . f) (WrapMonad . g)  mapM_ :: Monad m =>    (time -> m ()) -> (body -> m ()) ->    T time body -> m ()-mapM_ f g = Disp.mapM_ f g . decons+mapM_ f g =+   unwrapMonad . traverse_ (WrapMonad . f) (WrapMonad . g)   mapBodyM :: Monad m =>    (body0 -> m body1) -> T time body0 -> m (T time body1)-mapBodyM f = liftM (Disp.mapSecondM f)+mapBodyM f = unwrapMonad . traverseBody (WrapMonad . f)  mapTimeM :: Monad m =>    (time0 -> m time1) -> T time0 body -> m (T time1 body)-mapTimeM f = liftM (Disp.mapFirstM f)+mapTimeM f = unwrapMonad . traverseTime (WrapMonad . f)   {- |@@ -213,7 +240,7 @@          Mixed.consFirst t0 .          Uniform.catMaybesFirst .          flip evalState (Just t0) .-         Uniform.mapFirstM (\time -> state $ \ oldTime ->+         Uniform.traverseFirst (\time -> state $ \ oldTime ->             (Monad.guard (time /= oldTime) >> time, time)) .          Uniform.mapFirst Just) .    decons
src/Data/EventList/Absolute/TimeBodyPrivate.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -12,7 +12,9 @@ -- 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}@@ -29,6 +31,11 @@    (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)) ->
src/Data/EventList/Absolute/TimeTime.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -12,7 +12,9 @@     pause, isPause,     viewL, switchL, cons, snoc,     mapBody, mapTime,-    concatMapMonoid, mapM, mapM_, mapBodyM, mapTimeM,+    concatMapMonoid,+    traverse, traverse_, traverseBody, traverseTime,+    mapM, mapM_, mapBodyM, mapTimeM,     getTimes, getBodies, duration,     merge, mergeBy, insert, insertBy,     moveForward,@@ -40,7 +42,10 @@ import Data.Tuple.HT (mapSnd, mapPair, ) import Data.Maybe.HT (toMaybe, ) import Data.List.HT (isAscending, )+ import qualified Control.Monad as Monad+import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), )+ import Control.Monad.Trans.State (state, evalState)  import Data.Monoid (Monoid, )@@ -107,24 +112,46 @@    Uniform.concatMapMonoid g f . decons  +traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse f g = liftA (Uniform.traverse g f)++traverse_ :: Applicative m =>+   (time -> m ()) -> (body -> m ()) ->+   T time body -> m ()+traverse_ f g = Uniform.traverse_ g f . decons+++traverseBody :: Applicative m =>+   (body0 -> m body1) -> T time body0 -> m (T time body1)+traverseBody f = liftA (Uniform.traverseFirst f)++traverseTime :: Applicative m =>+   (time0 -> m time1) -> T time0 body -> m (T time1 body)+traverseTime f = liftA (Uniform.traverseSecond f)++ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1)-mapM f g = liftM (Uniform.mapM g f)+mapM f g =+   unwrapMonad . traverse (WrapMonad . f) (WrapMonad . g)  mapM_ :: Monad m =>    (time -> m ()) -> (body -> m ()) ->    T time body -> m ()-mapM_ f g = Uniform.mapM_ g f . decons+mapM_ f g =+   unwrapMonad . traverse_ (WrapMonad . f) (WrapMonad . g)   mapBodyM :: Monad m =>    (body0 -> m body1) -> T time body0 -> m (T time body1)-mapBodyM = liftM . Uniform.mapFirstM+mapBodyM f = unwrapMonad . traverseBody (WrapMonad . f)  mapTimeM :: Monad m =>    (time0 -> m time1) -> T time0 body -> m (T time1 body)-mapTimeM = liftM . Uniform.mapSecondM+mapTimeM f = unwrapMonad . traverseTime (WrapMonad . f)   @@ -175,7 +202,7 @@       Mixed.mapFirstInit          (Uniform.catMaybesFirst .           flip evalState (Just t0) .-          Uniform.mapFirstM (\time -> state $ \ oldTime ->+          Uniform.traverseFirst (\time -> state $ \ oldTime ->              (Monad.guard (time /= oldTime) >> time, time)) .           Uniform.mapFirst Just)) .    decons
src/Data/EventList/Absolute/TimeTimePrivate.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -18,8 +18,11 @@ import Data.Tuple.HT (mapFst, )  import qualified Control.Monad as Monad+import qualified Control.Applicative as Applicative +import Control.Applicative (Applicative, ) + newtype T time body = Cons {decons :: Uniform.T body time}    deriving (Eq, Ord, Show) @@ -33,6 +36,11 @@    (Uniform.T body0 time0 -> Uniform.T body1 time1) ->    (T time0 body0 -> T time1 body1) lift f = Cons . f . decons++liftA :: Applicative m =>+   (Uniform.T body0 time0 -> m (Uniform.T body1 time1)) ->+   (T time0 body0 -> m (T time1 body1))+liftA f = Applicative.liftA Cons . f . decons  liftM :: Monad m =>    (Uniform.T body0 time0 -> m (Uniform.T body1 time1)) ->
src/Data/EventList/Relative/BodyBody.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -19,6 +19,7 @@ -- import qualified Data.AlternatingList.List.Disparate as Disp import qualified Data.AlternatingList.List.Uniform as Uniform +import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), liftA, ) import Data.Monoid (Monoid, )  import Prelude hiding (mapM)@@ -29,7 +30,14 @@    T time body -> m concatMapMonoid f g = Uniform.concatMapMonoid f g . decons +traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse f g =+   liftA Cons . Uniform.traverse f g . decons+ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1)-mapM f g = liftM (Uniform.mapM f g)+mapM f g =+   unwrapMonad . traverse (WrapMonad . f) (WrapMonad . g)
src/Data/EventList/Relative/BodyTime.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -12,7 +12,7 @@ module Data.EventList.Relative.BodyTime    (T, empty,     fromPairList, toPairList,-    concatMapMonoid, mapM,+    concatMapMonoid, traverse, mapM,     foldr, foldrPair,     cons, snoc, viewL, viewR, switchL, switchR,     span,@@ -23,6 +23,7 @@ import qualified Data.AlternatingList.List.Disparate as Disp -- import qualified Data.AlternatingList.List.Uniform as Uniform +import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), liftA, ) import Data.Monoid (Monoid, )  import Data.Tuple.HT (mapFst, mapSnd, mapPair, )@@ -44,11 +45,17 @@ concatMapMonoid f g =    Disp.concatMapMonoid g f . decons +traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse timeAction bodyAction =+   liftA Cons . Disp.traverse bodyAction timeAction . decons+ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1) mapM timeAction bodyAction =-   liftM (Disp.mapM bodyAction timeAction)+   unwrapMonad . traverse (WrapMonad . timeAction) (WrapMonad . bodyAction)   foldr :: (body -> a -> b) -> (time -> b -> a) -> b -> T time body -> b
src/Data/EventList/Relative/TimeBody.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -25,7 +25,10 @@     fromPairList, toPairList,     getTimes, getBodies, duration,     mapBody, mapTime,-    concatMapMonoid, mapM, mapM_, mapBodyM, mapTimeM,+    zipWithBody, zipWithTime,+    concatMapMonoid,+    traverse, traverse_, traverseBody, traverseTime,+    mapM, mapM_, mapBodyM, mapTimeM,     foldr, foldrPair,     merge, mergeBy, insert, insertBy,     moveForward,@@ -51,6 +54,7 @@ import qualified Data.List as List import qualified Data.EventList.Utility as Utility +import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), ) import Data.Monoid (Monoid, )  import qualified Numeric.NonNegative.Class as NonNeg@@ -123,31 +127,65 @@ mapTime f = lift (Disp.mapFirst f)  +zipWithBody ::+   (body0 -> body1 -> body2) ->+   [body0] -> T time body1 -> T time body2+zipWithBody f = lift . Disp.zipWithSecond f +zipWithTime ::+   (time0 -> time1 -> time2) ->+   [time0] -> T time1 body -> T time2 body+zipWithTime f = lift . Disp.zipWithFirst f+++ concatMapMonoid :: Monoid m =>    (time -> m) -> (body -> m) ->    T time body -> m concatMapMonoid f g =    Disp.concatMapMonoid f g . decons ++traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse f g = liftA (Disp.traverse f g)++traverse_ :: Applicative m =>+   (time -> m ()) -> (body -> m ()) ->+   T time body -> m ()+traverse_ f g = Disp.traverse_ f g . decons+++traverseBody :: Applicative m =>+   (body0 -> m body1) -> T time body0 -> m (T time body1)+traverseBody f = liftA (Disp.traverseSecond f)++traverseTime :: Applicative m =>+   (time0 -> m time1) -> T time0 body -> m (T time1 body)+traverseTime f = liftA (Disp.traverseFirst f)++ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1)-mapM f g = liftM (Disp.mapM f g)+mapM f g =+   unwrapMonad . traverse (WrapMonad . f) (WrapMonad . g)  mapM_ :: Monad m =>    (time -> m ()) -> (body -> m ()) ->    T time body -> m ()-mapM_ f g = Disp.mapM_ f g . decons+mapM_ f g =+   unwrapMonad . traverse_ (WrapMonad . f) (WrapMonad . g)   mapBodyM :: Monad m =>    (body0 -> m body1) -> T time body0 -> m (T time body1)-mapBodyM f = liftM (Disp.mapSecondM f)+mapBodyM f = unwrapMonad . traverseBody (WrapMonad . f)  mapTimeM :: Monad m =>    (time0 -> m time1) -> T time0 body -> m (T time1 body)-mapTimeM f = liftM (Disp.mapFirstM f)+mapTimeM f = unwrapMonad . traverseTime (WrapMonad . f)   
src/Data/EventList/Relative/TimeBodyPrivate.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -15,7 +15,10 @@ import qualified Data.AlternatingList.List.Mixed as Mixed  import qualified Control.Monad as Monad+import qualified Control.Applicative as Applicative +import Control.Applicative (Applicative, )+ import Data.Tuple.HT (mapSnd, )  import Test.QuickCheck (Arbitrary(..))@@ -46,6 +49,11 @@    (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)) ->
src/Data/EventList/Relative/TimeTime.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -10,7 +10,9 @@ module Data.EventList.Relative.TimeTime    (T,     mapBody, mapTime,+    zipWithBody, zipWithTime,     concatMapMonoid,+    traverse, traverse_, traverseBody, traverseTime,     mapM, mapM_, mapBodyM, mapTimeM,     getTimes, getBodies, duration,     merge, mergeBy, insert, {- insertBy, -} pad,@@ -52,7 +54,9 @@ import Data.List.HT (isAscending, ) import Data.EventList.Utility (floorDiff, ) import Control.Monad.Trans.State (evalState, modify, get, gets, put, )+ import Control.Monad (liftM2, )+import Control.Applicative (Applicative, WrappedMonad(WrapMonad, unwrapMonad), )  import Prelude hiding    (null, foldr, map, filter, concat, cycle, sequence, sequence_, mapM, mapM_)@@ -116,30 +120,63 @@ mapTime = lift . Uniform.mapSecond  +zipWithBody ::+   (body0 -> body1 -> body2) ->+   [body0] -> T time body1 -> T time body2+zipWithBody f = lift . Uniform.zipWithFirst f +zipWithTime ::+   (time0 -> time1 -> time2) ->+   (time0, [time0]) -> T time1 body -> T time2 body+zipWithTime f = lift . Uniform.zipWithSecond f+++ concatMapMonoid :: Monoid m =>    (time -> m) -> (body -> m) ->    T time body -> m concatMapMonoid f g = Uniform.concatMapMonoid g f . decons +traverse :: Applicative m =>+   (time0 -> m time1) -> (body0 -> m body1) ->+   T time0 body0 -> m (T time1 body1)+traverse f g = liftA (Uniform.traverse g f)++traverse_ :: Applicative m =>+   (time -> m ()) -> (body -> m ()) ->+   T time body -> m ()+traverse_ f g = Uniform.traverse_ g f . decons+++traverseBody :: Applicative m =>+   (body0 -> m body1) -> T time body0 -> m (T time body1)+traverseBody f = liftA (Uniform.traverseFirst f)++traverseTime :: Applicative m =>+   (time0 -> m time1) -> T time0 body -> m (T time1 body)+traverseTime f = liftA (Uniform.traverseSecond f)++ mapM :: Monad m =>    (time0 -> m time1) -> (body0 -> m body1) ->    T time0 body0 -> m (T time1 body1)-mapM f g = liftM (Uniform.mapM g f)+mapM f g =+   unwrapMonad . traverse (WrapMonad . f) (WrapMonad . g)  mapM_ :: Monad m =>    (time -> m ()) -> (body -> m ()) ->    T time body -> m ()-mapM_ f g = Uniform.mapM_ g f . decons+mapM_ f g =+   unwrapMonad . traverse_ (WrapMonad . f) (WrapMonad . g)   mapBodyM :: Monad m =>    (body0 -> m body1) -> T time body0 -> m (T time body1)-mapBodyM = liftM . Uniform.mapFirstM+mapBodyM f = unwrapMonad . traverseBody (WrapMonad . f)  mapTimeM :: Monad m =>    (time0 -> m time1) -> T time0 body -> m (T time1 body)-mapTimeM = liftM . Uniform.mapSecondM+mapTimeM f = unwrapMonad . traverseTime (WrapMonad . f)   
src/Data/EventList/Relative/TimeTimePrivate.hs view
@@ -1,5 +1,5 @@ {- |-Copyright   :  (c) Henning Thielemann 2007+Copyright   :  (c) Henning Thielemann 2007-2009  Maintainer  :  haskell@henning-thielemann.de Stability   :  stable@@ -20,7 +20,10 @@ import Data.Tuple.HT (mapFst, mapSnd, )  import qualified Control.Monad as Monad+import qualified Control.Applicative as Applicative +import Control.Applicative (Applicative, )+ import Test.QuickCheck (Arbitrary(..))  @@ -48,6 +51,11 @@    (Uniform.T body0 time0 -> Uniform.T body1 time1) ->    (T time0 body0 -> T time1 body1) lift f = Cons . f . decons++liftA :: Applicative m =>+   (Uniform.T body0 time0 -> m (Uniform.T body1 time1)) ->+   (T time0 body0 -> m (T time1 body1))+liftA f = Applicative.liftA Cons . f . decons  liftM :: Monad m =>    (Uniform.T body0 time0 -> m (Uniform.T body1 time1)) ->