module Language.Passage.UI where
import qualified Language.Passage.Distribution as D
import Language.Passage.AST
import Control.Monad
normal :: Expr -> Expr -> BayesianNetwork Expr
normal m t = using (D.normal m t)
standardUniform :: BayesianNetwork Expr
standardUniform = using D.standardUniform
uniform :: Expr -> Expr -> BayesianNetwork Expr
uniform lo hi = using (D.uniform lo hi)
bernoulli :: Expr -> BayesianNetwork Expr
bernoulli t = using (D.bernoulli t)
categorical n ps = using (D.categorical n ps)
beta :: Expr -> Expr -> BayesianNetwork Expr
beta a b = using (D.beta a b)
dgamma :: Expr -> Expr -> BayesianNetwork Expr
dgamma a b = using (D.dgamma a b)
chiSquare :: Expr -> BayesianNetwork Expr
chiSquare df = dgamma (0.5*df) 0.5
dexp :: Expr -> BayesianNetwork Expr
dexp lambda = dgamma 1 lambda
studentT :: Expr -> BayesianNetwork Expr
studentT df = do
v <- chiSquare df
normal 0 v
symDirichlet :: Int -> Expr -> BayesianNetwork [Expr]
symDirichlet n alpha = do
gs <- replicateM n $ dgamma alpha 1
let s = sum gs
return [g/s | g <- gs]
improperUniform :: BayesianNetwork Expr
improperUniform = using D.improperUniform
improperScale :: BayesianNetwork Expr
improperScale = using D.improperScale