Automatic compile-time synthesis of entropy-optimal Boltzmann samplers
We present a famework for the automatic compilation of multi-parametric Boltzmann samplers for algebraic data types in Haskell. Our framework uses Template Haskell to synthesise efficient, entropy-optimal samplers generating random instances of user-declared algebraic data types. Users can control the outcome distribution through a pure, declarative interface. For instance, users can control the mean size and constructor frequencies of generated objects. We illustrate the effectiveness of our framework through a prototype generic-boltzmann-brain library showing that it is possible to control thousands of different parameters in systems of tens of thousands of ADTs. Our prototype framework synthesises Boltzmann samplers capable of rapidly generating random objects of sizes in the millions.
READ FULL TEXT