ProbabilityMonads-0.1.0: Control/Monad/Distribution.hs
{- |
Copyright : 2007 Eric Kidd
License : BSD3
Stability : experimental
This module is a wrapper around @Control.Monad.Distribution.Base@. It
provides definitions of 'DDist', 'ddist', 'BDDist' and 'bddist' based on
double-precion floating point numbers.
For the main API, see @Control.Monad.Distribution.Base@. For alternative
versions of 'DDist', etc., based on exact rational numbers, see
@Control.Monad.Distribution.Rational@.
-}
module Control.Monad.Distribution (
module Control.Monad.Distribution.Base,
DDist, ddist, BDDist, bddist
) where
import Control.Monad.Distribution.Base
import Control.Monad.Maybe
import Control.Monad.MonoidValue
import Data.Probability
-- | A discrete, finite probability distribution implemented using rational
-- numbers.
type DDist = MVT Prob []
-- | Force a value to be interpreted as having type 'DDist'.
ddist :: DDist a -> DDist a
ddist d = d
-- | A version of 'BDDist' with support for Bayes' theorem.
type BDDist = MaybeT DDist
-- | Force a value to be interpreted as having type 'BDDist', and apply
-- Bayes' rule. Returns 'Nothing' if no possible combination of events
-- will satisfy the guard conditions specified in 'BDDist'.
bddist :: BDDist a -> Maybe (DDist a)
bddist d = bayes d