aivika-transformers-5.4: Transformers for the Aivika simulation library

CopyrightCopyright (c) 2009-2017 David Sorokin <>
MaintainerDavid Sorokin <>
Safe HaskellNone




Tested with: GHC 8.0.1

The module defines the Simulation monad transformer that represents a simulation run.



data Simulation m a Source #

A value in the Simulation monad represents a computation within the simulation run.


Monad m => SimulationLift Simulation m Source # 
MonadDES m => ResultComputing Simulation m Source # 
(MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Simulation m (Vector e)) m Source # 
(Ix i, Show i, MonadDES m, ResultItemable (ResultValue [e])) => ResultProvider (Simulation m (Array i e)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (TimingStats a))) => ResultProvider (Simulation m (TimingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a), ResultItemable (ResultValue (SamplingStats a))) => ResultProvider (Simulation m (SamplingCounter a)) m Source # 
(MonadDES m, ResultItemable (ResultValue a)) => ResultProvider (Simulation m a) m Source # 

class SimulationLift t m where Source #

A type class to lift the simulation computations into other computations.

Minimal complete definition



liftSimulation :: Simulation m a -> t m a Source #

Lift the specified Simulation computation into another computation.

runSimulation :: MonadDES m => Simulation m a -> Specs m -> m a Source #

Run the simulation using the specified specs.

runSimulations :: MonadDES m => Simulation m a -> Specs m -> Int -> [m a] Source #

Run the given number of simulations using the specified specs, where each simulation is distinguished by its index simulationIndex.

runSimulationByIndex Source #


:: MonadDES m 
=> Simulation m a

the simulation model

-> Specs m

the simulation specs

-> Int

the number of runs in series

-> Int

the index of the current run (started from 1)

-> m a 

Run the simulation by the specified specs and run index in series.

Error Handling

catchSimulation :: (MonadException m, Exception e) => Simulation m a -> (e -> Simulation m a) -> Simulation m a Source #

Exception handling within Simulation computations.

finallySimulation :: MonadException m => Simulation m a -> Simulation m b -> Simulation m a Source #

A computation with finalization part like the finally function.

throwSimulation :: (MonadException m, Exception e) => e -> Simulation m a Source #

Like the standard throw function.


data SimulationAbort :: * #

An exception that signals of aborting the simulation.


SimulationAbort String

The exception to abort the simulation.

data SimulationRetry :: * #

An exception that signals that the current computation should be retried as possible, which feature may be supported by the simulation engine or not.


SimulationRetry String

The exception to retry the computation.