packages feed

hakaru-0.1.3: Tests/Models.hs

{-# LANGUAGE NoMonomorphismRestriction, GADTs #-}
module Tests.Models where

import Prelude hiding (Real)

import Language.Hakaru.Syntax2
import Language.Hakaru.Lambda
import qualified Language.Hakaru.Types as T

-- if we want to forgo the (D m) constraint, need to decorate the
-- program a little more.
prog_mixture :: (Meas m, D m ~ T.Dist ) => m Bool
prog_mixture = do
  c <- unconditioned (bern 0.5)
  _ <- conditioned (ifThenElse c (normal 1 1)
                                 (uniform 0 3))
  return c

prog_multiple_conditions :: (Meas m, D m ~ T.Dist) => m Double
prog_multiple_conditions = do
  b <- unconditioned (beta 1 1)
  _ <- conditioned (bern b)
  _ <- conditioned (bern b)
  return b