Skip to content

Welcome to Monad-Bayes

Monad-Bayes is a library for probabilistic programming written in Haskell.

Define distributions as programs

Perform inference with a variety of standard methods defined compositionally

Integrate with Haskell code like this because Monad-Bayes is just a library, not a separate language

Example

model :: Distribution Double
model = do
     x <- bernoulli 0.5
     normal (if x then (-3) else 3) 1

image :: Distribution Plot
image = fmap (plot . histogram 200) (replicateM 100000 model)

sampler image

The program model is a mixture of Gaussians. Its type Distribution Double represents a distribution over reals. image is a program too: as its type shows, it is a distribution over plots. In particular, plots that arise from forming a 200 bin histogram out of 100000 independent identically distributed (iid) draws from model. To sample from image, we simply write sampler image, with the result shown below: