aivika 5.7 → 5.8
raw patch · 7 files changed
+62/−5 lines, 7 filesdep ~exceptionsPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: exceptions
API changes (from Hackage documentation)
- Simulation.Aivika.Internal.Event: instance Data.Semigroup.Semigroup Simulation.Aivika.Internal.Event.DisposableEvent
- Simulation.Aivika.Results: instance Data.Semigroup.Semigroup Simulation.Aivika.Results.ResultSignal
- Simulation.Aivika.Results: instance Data.Semigroup.Semigroup Simulation.Aivika.Results.Results
- Simulation.Aivika.Signal: instance (GHC.Base.Monoid a, Data.Semigroup.Semigroup a) => GHC.Base.Monoid (Simulation.Aivika.Signal.Signalable a)
- Simulation.Aivika.Signal: instance Data.Semigroup.Semigroup (Simulation.Aivika.Signal.Signal a)
- Simulation.Aivika.Signal: instance Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Simulation.Aivika.Signal.Signalable a)
- Simulation.Aivika.Statistics: instance (Simulation.Aivika.Statistics.TimingData a, GHC.Show.Show a) => GHC.Show.Show (Simulation.Aivika.Statistics.TimingCounter a)
- Simulation.Aivika.Statistics: instance Simulation.Aivika.Statistics.SamplingData a => Data.Semigroup.Semigroup (Simulation.Aivika.Statistics.SamplingStats a)
- Simulation.Aivika.Stream: instance Data.Semigroup.Semigroup (Simulation.Aivika.Stream.Stream a)
+ Simulation.Aivika.Internal.Event: instance GHC.Base.Semigroup Simulation.Aivika.Internal.Event.DisposableEvent
+ Simulation.Aivika.Results: instance GHC.Base.Semigroup Simulation.Aivika.Results.ResultSignal
+ Simulation.Aivika.Results: instance GHC.Base.Semigroup Simulation.Aivika.Results.Results
+ Simulation.Aivika.Signal: instance (GHC.Base.Monoid a, GHC.Base.Semigroup a) => GHC.Base.Monoid (Simulation.Aivika.Signal.Signalable a)
+ Simulation.Aivika.Signal: instance GHC.Base.Semigroup (Simulation.Aivika.Signal.Signal a)
+ Simulation.Aivika.Signal: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Simulation.Aivika.Signal.Signalable a)
+ Simulation.Aivika.Statistics: instance (GHC.Show.Show a, Simulation.Aivika.Statistics.TimingData a) => GHC.Show.Show (Simulation.Aivika.Statistics.TimingCounter a)
+ Simulation.Aivika.Statistics: instance Simulation.Aivika.Statistics.SamplingData a => GHC.Base.Semigroup (Simulation.Aivika.Statistics.SamplingStats a)
+ Simulation.Aivika.Stream: instance GHC.Base.Semigroup (Simulation.Aivika.Stream.Stream a)
- Simulation.Aivika.Channel: Channel :: (Signal a -> Composite (Signal b)) -> Channel a b
+ Simulation.Aivika.Channel: Channel :: Signal a -> Composite (Signal b) -> Channel a b
- Simulation.Aivika.Circuit: Circuit :: (a -> Event (b, Circuit a b)) -> Circuit a b
+ Simulation.Aivika.Circuit: Circuit :: a -> Event (b, Circuit a b) -> Circuit a b
- Simulation.Aivika.Generator: Generator :: (Double -> Double -> IO Double) -> (Int -> Int -> IO Int) -> (Double -> Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> IO Double) -> (Double -> Int -> IO Double) -> (Double -> IO Int) -> (Double -> Int -> IO Int) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (Double -> Double -> IO Double) -> (forall a. DiscretePDF a -> IO a) -> IO Int -> Generator
+ Simulation.Aivika.Generator: Generator :: Double -> Double -> IO Double -> Int -> Int -> IO Int -> Double -> Double -> Double -> IO Double -> Double -> Double -> IO Double -> Double -> Double -> IO Double -> Double -> IO Double -> Double -> Int -> IO Double -> Double -> IO Int -> Double -> Int -> IO Int -> Double -> Double -> IO Double -> Double -> Double -> IO Double -> Double -> Double -> IO Double -> forall a. DiscretePDF a -> IO a -> IO Int -> Generator
- Simulation.Aivika.Net: Net :: (a -> Process (b, Net a b)) -> Net a b
+ Simulation.Aivika.Net: Net :: a -> Process (b, Net a b) -> Net a b
- Simulation.Aivika.Processor: Processor :: (Stream a -> Stream b) -> Processor a b
+ Simulation.Aivika.Processor: Processor :: Stream a -> Stream b -> Processor a b
- Simulation.Aivika.Results.Locale: ResultLocalisation :: (ResultId -> ResultDescription) -> (ResultId -> ResultDescription) -> ResultLocalisation
+ Simulation.Aivika.Results.Locale: ResultLocalisation :: ResultId -> ResultDescription -> ResultId -> ResultDescription -> ResultLocalisation
- Simulation.Aivika.Results.Locale.Types: ResultLocalisation :: (ResultId -> ResultDescription) -> (ResultId -> ResultDescription) -> ResultLocalisation
+ Simulation.Aivika.Results.Locale.Types: ResultLocalisation :: ResultId -> ResultDescription -> ResultId -> ResultDescription -> ResultLocalisation
- Simulation.Aivika.Signal: Signal :: ((a -> Event ()) -> Event DisposableEvent) -> Signal a
+ Simulation.Aivika.Signal: Signal :: (a -> Event ()) -> Event DisposableEvent -> Signal a
- Simulation.Aivika.Transform: Transform :: (Dynamics a -> Simulation (Dynamics b)) -> Transform a b
+ Simulation.Aivika.Transform: Transform :: Dynamics a -> Simulation (Dynamics b) -> Transform a b
Files
- CHANGELOG.md +5/−0
- Simulation/Aivika/Internal/Dynamics.hs +13/−0
- Simulation/Aivika/Internal/Event.hs +13/−0
- Simulation/Aivika/Internal/Parameter.hs +13/−0
- Simulation/Aivika/Internal/Simulation.hs +13/−0
- Simulation/Aivika/Vector/Unboxed.hs +3/−3
- aivika.cabal +2/−2
CHANGELOG.md view
@@ -1,4 +1,9 @@ +Version 5.8+-----++* Satisfying a new requirement of the MonadMask class type.+ Version 5.7 -----
Simulation/Aivika/Internal/Dynamics.hs view
@@ -209,6 +209,18 @@ invokeDynamics p (a $ q u) where q u (Dynamics b) = Dynamics (u . b) +-- | An implementation of 'generalBracket'.+generalBracketDynamics :: Dynamics a+ -> (a -> MC.ExitCase b -> Dynamics c)+ -> (a -> Dynamics b)+ -> Dynamics (b, c)+generalBracketDynamics acquire release use =+ Dynamics $ \p -> do+ MC.generalBracket+ (invokeDynamics p acquire)+ (\resource e -> invokeDynamics p $ release resource e)+ (\resource -> invokeDynamics p $ use resource)+ -- | Invoke the 'Dynamics' computation. invokeDynamics :: Point -> Dynamics a -> IO a {-# INLINE invokeDynamics #-}@@ -228,6 +240,7 @@ instance MC.MonadMask Dynamics where mask = maskDynamics uninterruptibleMask = uninterruptibleMaskDynamics+ generalBracket = generalBracketDynamics -- | Computation that returns the current simulation time. time :: Dynamics Double
Simulation/Aivika/Internal/Event.hs view
@@ -180,6 +180,18 @@ invokeEvent p (a $ q u) where q u (Event b) = Event (u . b) +-- | An implementation of 'generalBracket'.+generalBracketEvent :: Event a+ -> (a -> MC.ExitCase b -> Event c)+ -> (a -> Event b)+ -> Event (b, c)+generalBracketEvent acquire release use =+ Event $ \p -> do+ MC.generalBracket+ (invokeEvent p acquire)+ (\resource e -> invokeEvent p $ release resource e)+ (\resource -> invokeEvent p $ use resource)+ -- | Invoke the 'Event' computation. invokeEvent :: Point -> Event a -> IO a {-# INLINE invokeEvent #-}@@ -199,6 +211,7 @@ instance MC.MonadMask Event where mask = maskEvent uninterruptibleMask = uninterruptibleMaskEvent+ generalBracket = generalBracketEvent -- | Defines how the events are processed. data EventProcessing = CurrentEvents
Simulation/Aivika/Internal/Parameter.hs view
@@ -220,6 +220,18 @@ invokeParameter r (a $ q u) where q u (Parameter b) = Parameter (u . b) +-- | An implementation of 'generalBracket'.+generalBracketParameter :: Parameter a+ -> (a -> MC.ExitCase b -> Parameter c)+ -> (a -> Parameter b)+ -> Parameter (b, c)+generalBracketParameter acquire release use =+ Parameter $ \r -> do+ MC.generalBracket+ (invokeParameter r acquire)+ (\resource e -> invokeParameter r $ release resource e)+ (\resource -> invokeParameter r $ use resource)+ -- | Invoke the 'Parameter' computation. invokeParameter :: Run -> Parameter a -> IO a {-# INLINE invokeParameter #-}@@ -239,6 +251,7 @@ instance MC.MonadMask Parameter where mask = maskParameter uninterruptibleMask = uninterruptibleMaskParameter+ generalBracket = generalBracketParameter -- | Memoize the 'Parameter' computation, always returning the same value -- within a simulation run. However, the value will be recalculated for other
Simulation/Aivika/Internal/Simulation.hs view
@@ -180,6 +180,18 @@ invokeSimulation r (a $ q u) where q u (Simulation b) = Simulation (u . b) +-- | An implementation of 'generalBracket'.+generalBracketSimulation :: Simulation a+ -> (a -> MC.ExitCase b -> Simulation c)+ -> (a -> Simulation b)+ -> Simulation (b, c)+generalBracketSimulation acquire release use =+ Simulation $ \r -> do+ MC.generalBracket+ (invokeSimulation r acquire)+ (\resource e -> invokeSimulation r $ release resource e)+ (\resource -> invokeSimulation r $ use resource)+ -- | Invoke the 'Simulation' computation. invokeSimulation :: Run -> Simulation a -> IO a {-# INLINE invokeSimulation #-}@@ -199,6 +211,7 @@ instance MC.MonadMask Simulation where mask = maskSimulation uninterruptibleMask = uninterruptibleMaskSimulation+ generalBracket = generalBracketSimulation -- | Memoize the 'Simulation' computation, always returning the same value -- within a simulation run.
Simulation/Aivika/Vector/Unboxed.hs view
@@ -175,7 +175,7 @@ forM_ [index, index + 1 .. count - 2] $ \i -> do x <- readArray array (i + 1) writeArray array i x- writeArray array (count - 1) undefined+ -- writeArray array (count - 1) undefined writeIORef (vectorCountRef vector) (count - 1) -- | Delete the specified range of elements.@@ -203,8 +203,8 @@ forM_ [index, index + 1 .. (count - len) - 1] $ \i -> do x <- readArray array (i + len) writeArray array i x- forM_ [(count - len) .. count - 1] $ \i ->- writeArray array i undefined+ -- forM_ [(count - len) .. count - 1] $ \i ->+ -- writeArray array i undefined writeIORef (vectorCountRef vector) (count - len) -- | Return the index of the item or -1.
aivika.cabal view
@@ -1,5 +1,5 @@ name: aivika-version: 5.7+version: 5.8 synopsis: A multi-method simulation library description: Aivika is a discrete event simulation (DES) framework with support of activity-oriented,@@ -240,7 +240,7 @@ deepseq >= 1.1.0.0, binary >= 0.6.4.0, semigroups >= 0.10,- exceptions >= 0.6+ exceptions >= 0.9.0 other-extensions: FlexibleContexts, FlexibleInstances,