| Copyright | (c) Sam Raker 2016 | 
|---|---|
| License | BSD3 | 
| Maintainer | sam.raker@gmail.com | 
| Stability | experimental | 
| Portability | POSIX (FlexibleContexts, TemplateHaskell) | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Data.Markov.HMarkov
Description
Generate Markov sequences from vectors.
   The main entry points are:
      buildProc creates a MarkovProcess from a vector of training elements,
        a starting element, and a StdGen
      runUntil runs a MarkovProcess until a termination condition is met, and
        returns the resulting sequence
- data MarkovMap a = MarkovMap {}
 - data MarkovProcess m a = MarkovProcess {}
 - buildMap :: Eq a => Vector a -> MarkovMap a
 - buildProc :: (Eq a, MonadPlus m) => Vector a -> a -> StdGen -> MarkovProcess m a
 - buildProcIO :: (Eq a, MonadPlus m) => Vector a -> a -> IO (MarkovProcess m a)
 - runMarkov :: (Eq a, MonadPlus m) => MarkovProcess m a -> (m a, MarkovProcess m a)
 - runUntil :: (Eq a, MonadPlus m) => (m a -> Bool) -> MarkovProcess m a -> m a
 
Data structures
Map of frequencies
Map of frequencies
Constructors
| MarkovMap | |
Complete process
data MarkovProcess m a Source #
State-compatible wrapper around a trained
 MarkovMap, which includes a StdGen and the most
 recently-generated element, or the starting element if the process hasn't
 been run yet
Constructors
| MarkovProcess | |
Construction helpers
buildProc :: (Eq a, MonadPlus m) => Vector a -> a -> StdGen -> MarkovProcess m a Source #
Build a MarkovProcess from a vector of elements, a starting element, and a source of randomness NOTE: the starting element should be a member of the training vector
buildProcIO :: (Eq a, MonadPlus m) => Vector a -> a -> IO (MarkovProcess m a) Source #
Build a MarkovProcess from a vector of elements and a starting element, using
 getStdGen for randomness
Run processes
runMarkov :: (Eq a, MonadPlus m) => MarkovProcess m a -> (m a, MarkovProcess m a) Source #
Run a MarkovProcess once, generating a new element that is appended to the accumulator