use a non-empty list structure for the distribution
more efficient data structure,
we will run into the 'monad instance for Data.Set' problem
see http://www.randomhacks.net/articles/2007/03/15/data-set-monad-haskell-macros
it's certainly better to provide a 'collaps' function for removing duplicates
use monad functions instead of custom Dist functions
check where 'collaps' must be applied
separate module name space
generalize ToFloat class to Num
use pretty printer in PrintList?
current Show instance is nice for single Dist values, but not for (Dist a, Dist b) et.al.
simplify examples (boys, monty hall et.al.)
replace RandomIO by Random and State monad
QuickCheck properties