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 |
Tested with: GHC 8.0.1
This module defines memo functions. The memoization creates such Dynamics
computations, which values are cached in the integration time points. Then
these values are interpolated in all other time points.
Synopsis
- class Monad m => MonadMemo m where
- memoDynamics :: Dynamics m e -> Simulation m (Dynamics m e)
- memo0Dynamics :: Dynamics m e -> Simulation m (Dynamics m e)
- iterateDynamics :: Dynamics m () -> Simulation m (Dynamics m ())
- unzipDynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b)
- unzip0Dynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b)
Documentation
class Monad m => MonadMemo m where Source #
A monad with the support of memoisation.
memoDynamics :: Dynamics m e -> Simulation m (Dynamics m e) Source #
Memoize and order the computation in the integration time points using
the interpolation that knows of the Runge-Kutta method. The values are
calculated sequentially starting from starttime
.
memo0Dynamics :: Dynamics m e -> Simulation m (Dynamics m e) Source #
Memoize and order the computation in the integration time points using
the discreteDynamics
interpolation. It consumes less memory than the memoDynamics
function but it is not aware of the Runge-Kutta method. There is a subtle
difference when we request for values in the intermediate time points
that are used by this method to integrate. In general case you should
prefer the memo0Dynamics
function above memoDynamics
.
iterateDynamics :: Dynamics m () -> Simulation m (Dynamics m ()) Source #
Iterate sequentially the dynamic process with side effects in
the integration time points. It is equivalent to a call of the
memo0Dynamics
function but significantly more efficient, for the array
is not created.
Instances
MonadMemo IO Source # | |
Defined in Simulation.Aivika.IO.Dynamics.Memo memoDynamics :: Dynamics IO e -> Simulation IO (Dynamics IO e) Source # memo0Dynamics :: Dynamics IO e -> Simulation IO (Dynamics IO e) Source # iterateDynamics :: Dynamics IO () -> Simulation IO (Dynamics IO ()) Source # |
unzipDynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b) Source #
Memoize and unzip the computation of pairs, applying the memoDynamics
function.
unzip0Dynamics :: MonadMemo m => Dynamics m (a, b) -> Simulation m (Dynamics m a, Dynamics m b) Source #
Memoize and unzip the computation of pairs, applying the memo0Dynamics
function.