Provides monadic interface for computation with discrete random variables. Based on: http://web.engr.oregonstate.edu/~erwig/papers/PFP_JFP06.pdf
type Prob = P.Prob
prob :: Number -> Maybe P.Prob
runProb :: P.Prob -> Number
type ProbList = P.ProbList
probList :: [P.Prob] -> Maybe P.ProbList
runProbList :: P.ProbList -> [P.Prob]
type Dist = P.Dist
dist :: forall a. [Tuple a P.Prob] -> Maybe (P.Dist a)
zipDist :: forall a. [a] -> P.ProbList -> P.Dist a
fromFreqs :: forall a. [Tuple a Number] -> Maybe (P.Dist a)
choose :: forall a. P.Prob -> a -> a -> P.Dist a
runDist :: forall a. P.Dist a -> [Tuple a Number]
distProbs :: forall a. P.Dist a -> P.ProbList
extract :: forall a. P.Dist a -> [a]
type Spread a = [a] -> Maybe (P.Dist a)
uniform :: forall a. Spread a
relative :: forall a. [Number] -> Spread a
reshape :: forall a. Spread a -> P.Dist a -> Maybe (P.Dist a)
norm :: forall a. (Ord a) => P.Dist a -> P.Dist a
type Event a = a -> Boolean
oneOf :: forall a. (Eq a) => [a] -> Event a
just :: forall a. (Eq a) => a -> Event a
(??) :: forall a. Event a -> P.Dist a -> P.Prob
(?=<<) :: forall a. Event a -> P.Dist a -> Maybe (P.Dist a)
(>>=?) :: forall a. P.Dist a -> Event a -> Maybe (P.Dist a)
filter :: forall a. Event a -> P.Dist a -> Maybe (P.Dist a)
cond :: forall a. P.Dist Boolean -> P.Dist a -> P.Dist a -> P.Dist a
joinDists :: forall a b c. (a -> b -> c) -> P.Dist a -> (a -> P.Dist b) -> P.Dist c
marginalize :: forall a b. (Eq b) => (a -> b) -> P.Dist a -> P.Dist b
data Iso a b
= Iso (a -> b) (b -> a)
to :: forall a b. Iso a b -> a -> b
from :: forall a b. Iso a b -> b -> a
expected :: forall a. Iso a Number -> P.Dist a -> a
variance :: forall a. Iso a Number -> P.Dist a -> a
stdDev :: forall a. Iso a Number -> P.Dist a -> a
approx :: forall a. (Ord a) => P.Dist a -> P.Dist a -> Boolean
size :: forall a. P.Dist a -> Number
map :: forall a b. (Ord b) => (a -> b) -> P.Dist a -> P.Dist b
mapMaybe :: forall a b. (a -> Maybe b) -> P.Dist a -> Maybe (P.Dist b)
Data declarations which are hidden behind smart constructors in Probability
.
newtype Prob
= Prob Number
newtype ProbList
= ProbList [Prob]
newtype Dist a
= Dist [Tuple a Number]
epsilon :: Number
(~~) :: Number -> Number -> Boolean
(/~) :: Number -> Number -> Boolean
(<~) :: Number -> Number -> Boolean
(>~) :: Number -> Number -> Boolean
lift :: forall a. ([Tuple a Number] -> [Tuple a Number]) -> Dist a -> Dist a
sumP :: forall a. [Tuple a Number] -> Number
sortP :: forall a. [Tuple a Number] -> [Tuple a Number]
sortElem :: forall a. (Ord a) => [Tuple a Number] -> [Tuple a Number]
norm' :: forall a. (Ord a) => [Tuple a Number] -> [Tuple a Number]
isValid :: forall a. [Tuple a Number] -> Boolean
instance functorDist :: Functor Dist
instance applyDist :: Apply Dist
instance applicativeDist :: Applicative Dist
instance bindDist :: Bind Dist
instance monadDist :: Monad Dist
instance eqProb :: Eq Prob
instance ordProb :: Ord Prob
instance showProb :: Show Prob
instance eqDist :: (Eq a) => Eq (Dist a)
instance ordDist :: (Ord a) => Ord (Dist a)
instance showDist :: (Show a) => Show (Dist a)
instance eqProbList :: Eq ProbList
instance ordProbList :: Ord ProbList
instance showProbList :: Show ProbList