| Stability | experimental |
|---|---|
| Safe Haskell | None |
| Language | Haskell2010 |
Control.Monad.Markov
Description
A Markov chain monad, built on top of https://hackage.haskell.org/package/MonadRandom.
The interface is defined by MonadMarkov.
For example code, see the "example" directory.
Synopsis
- class Monad m => MonadMarkov s m where
- type MarkovStd s = MarkovR s StdGen
- type MarkovStdT s m = MarkovRT s StdGen m
- type MarkovR s g = MarkovT s (Rand g)
- type MarkovRT s g m = MarkovT s (RandT g m)
- type Markov s a = MarkovT s Identity a
- type TransTable a = a -> [(a, Rational)]
- data MarkovT s m a
- withMarkovT :: (s -> s) -> MarkovT s m a -> MarkovT s m a
- evalMarkovT :: Monad m => MarkovT s m a -> s -> TransTable s -> m a
- evalMarkov :: Markov s a -> s -> TransTable s -> a
- runMarkovT :: MarkovT s m a -> s -> TransTable s -> m (a, s)
- runMarkov :: Markov s a -> s -> TransTable s -> (a, s)
- runMarkovRT :: Functor m => MarkovRT s g m a -> g -> s -> TransTable s -> m (a, g, s)
- runMarkovR :: MarkovR s g a -> g -> s -> TransTable s -> (a, g, s)
- runMarkovStdT :: Functor m => MarkovStdT s m a -> Int -> s -> TransTable s -> m (a, StdGen, s)
- runMarkovStd :: MarkovStd s a -> Int -> s -> TransTable s -> (a, StdGen, s)
- evalMarkovRT :: Monad m => MarkovRT s g m a -> g -> s -> TransTable s -> m a
- evalMarkovR :: MarkovR s g a -> g -> s -> TransTable s -> a
- evalMarkovStdT :: Monad m => MarkovStdT s m a -> Int -> s -> TransTable s -> m a
- evalMarkovStd :: MarkovStd s a -> Int -> s -> TransTable s -> a
- evalMarkovIO :: MarkovStdT s IO a -> s -> TransTable s -> IO a
Documentation
class Monad m => MonadMarkov s m where Source #
An interface to Markov process monads.
Minimal complete definition
Instances
| (MonadMarkov s m, RandomGen g) => MonadMarkov s (RandT g m) Source # | |
Defined in Control.Monad.Markov.Class | |
| MonadRandom m => MonadMarkov s (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal | |
type MarkovStd s = MarkovR s StdGen Source #
Basic Markov monad, using the standard random generator StdGen
type MarkovStdT s m = MarkovRT s StdGen m Source #
Markov monad transformer, using the standard random generator
type MarkovR s g = MarkovT s (Rand g) Source #
Basic markov monad laid over the RandT random value monad.
type MarkovRT s g m = MarkovT s (RandT g m) Source #
Markov monad transformer, laid over the RandT random value monad.
type TransTable a = a -> [(a, Rational)] Source #
a transition function, from a state, to a weighted list of states. The total weight of states must not be 0.
A monad transformer which adds access to a state and a probabilistic transition function to an existing monad.
Parameterized by:
s- The state.m- The inner monad.
The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.
Instances
| MonadRandom m => MonadMarkov s (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal | |
| Monad m => Monad (MarkovT s m) Source # | |
| Functor m => Functor (MarkovT s m) Source # | |
| Monad m => Applicative (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal | |
| MonadPlus m => MonadPlus (MarkovT s m) Source # | |
| MonadIO m => MonadIO (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal | |
| MonadRandom m => MonadRandom (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal | |
| MonadInterleave m => MonadInterleave (MarkovT s m) Source # | |
Defined in Control.Monad.Markov.Internal Methods interleave :: MarkovT s m a -> MarkovT s m a # | |
| MonadPlus m => Alternative (MarkovT s m) Source # | |
withMarkovT :: (s -> s) -> MarkovT s m a -> MarkovT s m a Source #
withMarkovT f m executes action m on a state modified by applying f.
Arguments
| :: Monad m | |
| => MarkovT s m a | computation to execute |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m a |
Evaluate a Markov chain computation with a given initial state and transition table, and return the final value, discarding the final state.
Arguments
| :: Markov s a | computation to execute |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> a |
Evaluate a Markov chain computation with a given initial state and transition table, and return the final value, discarding the final state.
Arguments
| :: MarkovT s m a | computation to execute |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m (a, s) |
Unwrap a Markov monad computation as a function.
Arguments
| :: Markov s a | computation to execute |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> (a, s) |
Unwrap a Markov monad computation as a function.
Arguments
| :: Functor m | |
| => MarkovRT s g m a | computation to execute |
| -> g | generator to use |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m (a, g, s) |
Run a Markov computation using the generator g, returning the result, the updated generator, and the the final state.
Arguments
| :: MarkovR s g a | computation to execute |
| -> g | generator to use |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> (a, g, s) |
Run a Markov computation using the generator g, returning the result, the updated generator, and the the final state.
Arguments
| :: Functor m | |
| => MarkovStdT s m a | computation to execute |
| -> Int | seed for generator |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m (a, StdGen, s) |
Run a Markov computation using the random number generator used by getStdRandom, initialised with the seed seed, returning the result, the updated generator, and the the final state.
Arguments
| :: MarkovStd s a | computation to execute |
| -> Int | seed for generator |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> (a, StdGen, s) |
Run a Markov computation using the random number generator used by getStdRandom, initialised with the seed seed, returning the result, the updated generator, and the the final state.
Arguments
| :: Monad m | |
| => MarkovRT s g m a | computation to execute |
| -> g | generator to use |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m a |
Evaluate a MarkovRT computation using the random generator g.
Arguments
| :: MarkovR s g a | computation to execute |
| -> g | generator to use |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> a |
Evaluate a MarkovR computation using the random generator g.
Arguments
| :: Monad m | |
| => MarkovStdT s m a | computation to execute |
| -> Int | seed for generator |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> m a |
Evaluate a MarkovRT computation using the standard random generator, initialized with seed.
Arguments
| :: MarkovStd s a | computation to execute |
| -> Int | seed for generator |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> a |
Evaluate a MarkovRT computation using the standard random generator, initialized with seed.
Arguments
| :: MarkovStdT s IO a | computation to execute |
| -> s | initial state |
| -> TransTable s | transition function to use |
| -> IO a |