ProbabilityMonads-0.1.0: Data/Probability/Rational.hs
module Data.Probability.Rational (
module Data.Probability.Base,
Prob()
) where
import Data.Monoid
import Data.Probability.Base
-- | An implementation of 'Data.Probability.Probability' using rational
-- numbers.
newtype Prob = Prob Rational
deriving (Eq)
instance Probability Prob where
prob = Prob
fromProb (Prob p) = p
pnot (Prob p) = Prob (1-p)
padd (Prob p1) (Prob p2) = Prob (p1 + p2)
pmul (Prob p1) (Prob p2) = Prob (p1 * p2)
instance Monoid Prob where
mempty = prob 1
mappend = pmul
instance Show Prob where
show (Prob p) = show p