Copyright | Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com> |
---|---|
License | BSD3 |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
Tested with: GHC 8.0.1
The module defines the Simulation
monad transformer that represents a simulation run.
- data Simulation m a
- class SimulationLift t m where
- runSimulation :: MonadDES m => Simulation m a -> Specs m -> m a
- runSimulations :: MonadDES m => Simulation m a -> Specs m -> Int -> [m a]
- runSimulationByIndex :: MonadDES m => Simulation m a -> Specs m -> Int -> Int -> m a
- catchSimulation :: (MonadException m, Exception e) => Simulation m a -> (e -> Simulation m a) -> Simulation m a
- finallySimulation :: MonadException m => Simulation m a -> Simulation m b -> Simulation m a
- throwSimulation :: (MonadException m, Exception e) => e -> Simulation m a
- data SimulationException :: * where
- data SimulationAbort :: * = SimulationAbort String
- data SimulationRetry :: * = SimulationRetry String
Simulation
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.
liftSimulation :: Simulation m a -> t m a Source #
Lift the specified Simulation
computation into another computation.
Monad m => SimulationLift Simulation m Source # | |
Monad m => SimulationLift Composite m Source # | |
MonadDES m => SimulationLift Cont m Source # | |
MonadDES m => SimulationLift Process m Source # | |
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
.
:: 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.
Exceptions
data SimulationException :: * where #
The root of simulation exceptions.
SimulationException :: SimulationException | A particular simulation exception. |
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. |