
Hello Benjamin, Thus quoth Benjamin Redelings at 15:47 on Tue, Jun 13 2017:
I'm working on a project to implement support for probabilistic programming with models written as Haskell programs. This is similar to Bayesian graphical models (e.g. BUGS, JAGS) and to full probabilistic programming systems like Church / Venture.
This project looks very interesting to me and seems to be a result of an impressive amount of work! Thank you for the announcement.
Probabilistic programs are written using the probability monad.
I've implemented a Haskell interpreter in C++ that records execution traces of the Haskell programs.
Is your probability monad an actual monad that you implemented in a Haskell package, or is it a consequence of the fact that you are running Haskell-like programs in your interpreter? More generally: how deep can the interoperability between your project and some other Haskell code go?
These execution traces depend on some number of (random) variables, and when one of the variables is changed (during MCMC), the parts of the execution trace that depend on the changed variables are invalidated and recomputed. This saves work by not recomputing the probability of the new state from scratch. I can provide DOT graphs of the execution traces if anyone is interested.
That sounds really cool!
The problem domain I've been focusing on is evolution of DNA sequences on binary trees.
I'm very much interested in your project because I often look into non-deterministic evolution of some abstract computing devices, and you actually seem to be focusing on a similar use case. -- Sergiu