
It seems worth mentioning then another Haskell embedded language for probabilistic programming http://okmij.org/ftp/kakuritu/Hakaru10/index.html It also lets us write probabilistic models as Haskell programs. It supports both discrete and continuous distributions, conditioning, as well as branching (mixing models). It takes care to statically preclude senseless models (forcing conditioning only on external data). The 'Model' is *not* a monad. Not everything can be or should be a monad. Hakaru10 also takes care to avoid the problems that are frequent in implementations of Wingate algorithms. It also uses incremental evaluation. As to semantic problems of probabilistic programming languages, http://okmij.org/ftp/kakuritu/index.html shows a couple of them.