<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class=""><div class="">While we're mentioning Haskell-embedded languages for probabilistic <br class="">programming, there is yet another, Hakaru.<br class=""><br class="">github: <a href="https://github.com/hakaru-dev/hakaru" class="">https://github.com/hakaru-dev/hakaru</a><br class="">docs: <a href="https://hakaru-dev.github.io/" class="">https://hakaru-dev.github.io/</a><br class="">hackage: <a href="https://hackage.haskell.org/package/hakaru-0.4.0" class="">https://hackage.haskell.org/package/hakaru-0.4.0</a><br class=""><br class="">It can be used either embedded or via an external syntax. It can act as <br class="">a sampler, but also do code generation (to Haskell, to C, more coming), <br class="">simplification (via Maple if it is installed) and disintegration (aka <br class="">conditioning).<br class=""><br class="">It uses quite a number of advanced Haskell features (though works in 7.8 <br class="">onwards) to insure safety of the embedded language. See <br class=""><a href="https://hackage.haskell.org/package/hakaru-0.4.0/docs/Language-Hakaru-Syntax-ABT.html" class="">https://hackage.haskell.org/package/hakaru-0.4.0/docs/Language-Hakaru-Syntax-ABT.html</a> <br class="">if you are curious about that.<br class=""><br class="">Jacques<br class=""></div></div></blockquote></div><br class=""><div class="">There are production strength PPLs like Stan and PyMC3. They aren’t Haskell but if you actually want to model something then they are my “go to” tools. There’s also LibBI which uses Sequential Monte Carlo rather than Hamiltonian Monte Carlo. Stan and LibBI are C++ with interfaces (I use the word very loosely) from e.g. R, Python, Matlab, etc. PyMC3 as you might guess is entirely Python. Both have very good communities.</div><div class=""><br class=""></div><div class="">In Haskell there is also monad-bayes <a href="https://github.com/adscib/monad-bayes" class="">https://github.com/adscib/monad-bayes</a> and baysig, the latter sadly not publicly available (last time I checked). If you have a hidden state model (e.g. stochastic volatility) then there is also particle filtering (aka Sequential Monte Carlo) using <a href="https://hackage.haskell.org/package/kalman-1.0.0.2" class="">https://hackage.haskell.org/package/kalman-1.0.0.2</a>.</div><div class=""><br class=""></div><div class="">I just looked at the commit log for monad-bayes and it seems to use HMC these days :) and supports ADVI.</div><div class=""><br class=""></div><div class="">I spent a bit of time at the recent Zurihac with Alexander Vershilov making some very small steps towards a symplectic integrator package which could form the basis for HMC in Haskell.</div><br class=""><div class="">
<div class="">Dominic Steinitz</div><div class=""><a href="mailto:dominic@steinitz.org" class="">dominic@steinitz.org</a></div><div class=""><a href="http://idontgetoutmuch.wordpress.com" class="">http://idontgetoutmuch.wordpress.com</a></div>
</div>
<br class=""></body></html>