-- | TracingmoduleNumeric.Probability.TracewhereimportqualifiedNumeric.Probability.Distribution asDistimportqualifiedNumeric.Probability.Transition asTransimportqualifiedNumeric.Probability.Random asRndimportData.List(transpose)-- * traces of distributionstypeTrace a =[a ]typeWalk a =a ->Trace a typeSpace prob a =Trace (Dist.T prob a )typeExpand prob a =a ->Space prob a -- for ListUtils-- | walk is a bounded version of the predefined function iteratewalk::Int->Trans.Change a ->Walk a walk n f =taken .iteratef -- * traces of random experimentstypeRTrace a =Rnd.T (Trace a )typeRWalk a =a ->RTrace a typeRSpace prob a =Rnd.T (Space prob a )typeRExpand prob a =a ->RSpace prob a {- | 'merge' converts a list of 'RTrace's into a list of randomized distributions, i.e., an 'RSpace', by creating a randomized distribution for each list position across all traces -}merge::(Fractionalprob ,Orda )=>[RTrace a ]->RSpace prob a merge =fmap(zipListWith (Dist.norm .Dist.uniform )).sequence-- for ListUtilszipListWith::([a ]->b )->[[a ]]->[b ]zipListWith f =mapf .transpose