HMarkov-1.0.1.0: Markov-generated sequences

Copyright(c) Sam Raker 2016
LicenseBSD3
Maintainersam.raker@gmail.com
Stabilityexperimental
PortabilityPOSIX (FlexibleContexts, TemplateHaskell)
Safe HaskellNone
LanguageHaskell2010

Data.Markov.HMarkov

Contents

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

Synopsis

Data structures

Map of frequencies

data MarkovMap a Source #

Map of frequencies

Constructors

MarkovMap 

Fields

Instances

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 

Fields

  • _pMap :: MarkovMap a

    Wrapped MarkovMap

  • _g :: StdGen
     
  • _lastT :: a

    Most recently generated element (or starting element)

  • _acc :: m a

    MonadPlus of already-generated elements

Instances

(Show (m a), Show a) => Show (MarkovProcess m a) Source # 

Construction helpers

buildMap :: Eq a => Vector a -> MarkovMap a Source #

Build a MarkovMap from a vector of elements

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

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

runUntil :: (Eq a, MonadPlus m) => (m a -> Bool) -> MarkovProcess m a -> m a Source #

Run a MarkovProcess continually until a termination condition is met, returning the accumulator