Figaro

Figaro: An Object-Oriented Probabilistic Programming Language. We introduce an object-oriented paradigm for probabilistic programming, embodied in the Figaro language. Models in Figaro are objects, and may have properties such as conditions, constraints and relationships to other objects. Figaro model classes are created by inheriting functionality from existing classes. Figaro provides a modular, compositional Metropolis-Hastings algorithm, and gives the modeler optional control over it. Figaro is tightly integrated into the Scala programming language, giving it access to a rich type system, control abstractions and libraries.