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

CopyrightCopyright (c) 2009-2015, David Sorokin <>
MaintainerDavid Sorokin <>
Safe HaskellSafe




Tested with: GHC 7.10.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.

class SimulationLift t m where Source

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


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 SimulationException :: *

The root of simulation exceptions.

data SimulationAbort :: *

An exception that signals of aborting the simulation.