Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status Hackage Version MIT License

Common types for implementing Markov Chain Monte Carlo (MCMC) algorithms.

An instance of an MCMC problem can be characterized by the following:

  • A target distribution over some parameter space
  • A parameter space for a Markov chain to wander over
  • A transition operator to drive the Markov chain

mcmc-types provides the suitably-general Target, Chain, and Transition types for usefully representing these things respectively.

  • Target is a product type intended to hold a log-target density function and potentially its gradient.

  • The Chain type represents an 'annotated' parameter space. Technically all that's required is the type of the parameter space itself (held here in chainPosition) but in practice some additional information is typically useful. The chainTunables field can be used to hold arbitrary data; one should avoid using it to do something nasty like, say, invalidating the Markov property.

  • The Transition type permits probabilistic transitions over some state space by way of the underlying Prob monad.

See e.g. the mighty-metropolis library for example use.