| Copyright | Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com> |
|---|---|
| License | BSD3 |
| Maintainer | David Sorokin <david.sorokin@gmail.com> |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Simulation.Aivika.Trans.Internal.Simulation
Description
Tested with: GHC 8.0.1
The module defines the Simulation monad transformer that represents a computation
within the simulation run.
Synopsis
- newtype Simulation m a = Simulation (Run m -> m a)
- class SimulationLift t m where
- liftSimulation :: Simulation m a -> t m a
- invokeSimulation :: Run m -> Simulation m a -> m a
- 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 = Exception e => SimulationException e
- data SimulationAbort = SimulationAbort String
- data SimulationRetry = SimulationRetry String
Simulation
newtype Simulation m a Source #
A value in the Simulation monad represents a computation
within the simulation run.
Constructors
| Simulation (Run m -> m a) |
Instances
class SimulationLift t m where Source #
A type class to lift the simulation computations into other computations.
Methods
liftSimulation :: Simulation m a -> t m a Source #
Lift the specified Simulation computation into another computation.
Instances
| Monad m => SimulationLift Event m Source # | |
Defined in Simulation.Aivika.Trans.Internal.Event Methods liftSimulation :: Simulation m a -> Event m a Source # | |
| Monad m => SimulationLift Dynamics m Source # | |
Defined in Simulation.Aivika.Trans.Internal.Dynamics Methods liftSimulation :: Simulation m a -> Dynamics m a Source # | |
| Monad m => SimulationLift Simulation m Source # | |
Defined in Simulation.Aivika.Trans.Internal.Simulation Methods liftSimulation :: Simulation m a -> Simulation m a Source # | |
| Monad m => SimulationLift Composite m Source # | |
Defined in Simulation.Aivika.Trans.Composite Methods liftSimulation :: Simulation m a -> Composite m a Source # | |
| MonadDES m => SimulationLift Cont m Source # | |
Defined in Simulation.Aivika.Trans.Internal.Cont Methods liftSimulation :: Simulation m a -> Cont m a Source # | |
| MonadDES m => SimulationLift Process m Source # | |
Defined in Simulation.Aivika.Trans.Internal.Process Methods liftSimulation :: Simulation m a -> Process m a Source # | |
invokeSimulation :: Run m -> Simulation m a -> m a Source #
Invoke the Simulation 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.
Arguments
| :: 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 #
The root of simulation exceptions.
Constructors
| Exception e => SimulationException e | A particular simulation exception. |
Instances
| Show SimulationException | |
Defined in Simulation.Aivika.Internal.Simulation Methods showsPrec :: Int -> SimulationException -> ShowS # show :: SimulationException -> String # showList :: [SimulationException] -> ShowS # | |
| Exception SimulationException | |
Defined in Simulation.Aivika.Internal.Simulation Methods toException :: SimulationException -> SomeException # fromException :: SomeException -> Maybe SimulationException # | |
data SimulationAbort #
An exception that signals of aborting the simulation.
Constructors
| SimulationAbort String | The exception to abort the simulation. |
Instances
| Show SimulationAbort | |
Defined in Simulation.Aivika.Internal.Simulation Methods showsPrec :: Int -> SimulationAbort -> ShowS # show :: SimulationAbort -> String # showList :: [SimulationAbort] -> ShowS # | |
| Exception SimulationAbort | |
Defined in Simulation.Aivika.Internal.Simulation Methods toException :: SimulationAbort -> SomeException # | |
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.
Constructors
| SimulationRetry String | The exception to retry the computation. |
Instances
| Show SimulationRetry | |
Defined in Simulation.Aivika.Internal.Simulation Methods showsPrec :: Int -> SimulationRetry -> ShowS # show :: SimulationRetry -> String # showList :: [SimulationRetry] -> ShowS # | |
| Exception SimulationRetry | |
Defined in Simulation.Aivika.Internal.Simulation Methods toException :: SimulationRetry -> SomeException # | |