mwc-probability-transition- A Markov stochastic transition operator with logging

Safe HaskellNone





data Transition message s m a Source #

A Markov transition kernel.


Functor m => Functor (Transition message s m) Source # 


fmap :: (a -> b) -> Transition message s m a -> Transition message s m b #

(<$) :: a -> Transition message s m b -> Transition message s m a #

Show (Transition msg s m a) Source # 


showsPrec :: Int -> Transition msg s m a -> ShowS #

show :: Transition msg s m a -> String #

showList :: [Transition msg s m a] -> ShowS #

mkTransition Source #


:: Monad m 
=> (s -> Prob m t)

Random generation

-> (s -> t -> (a, s))

(Output, Next state)

-> (a -> s -> message)

Log message construction

-> Transition message s m a 

Construct a Transition from sampling, state transformation and logging functions.

NB: The three function arguments are used in the order in which they appear here:

  1. a random sample w :: t is produced, using the current state x :: s as input
  2. output z :: a and next state x' :: s are computed using w and x
  3. a logging message is constructed, using z and x' as arguments.

runTransition Source #


:: Monad m 
=> Handler m message

Logging handler

-> Transition message s m a 
-> Int

Number of iterations

-> s

Initial state

-> Gen (PrimState m)


-> m ([a], s)

(Outputs, Final state)

Run a Transition for a number of steps, while logging each iteration.

Helper functions

withSeverity :: (t -> String) -> WithSeverity t -> String Source #

Render a logging message along with an annotation of its severity.