monad-bayes-1.0.0: test/TestPipes.hs
{-# OPTIONS_GHC -Wno-monomorphism-restriction #-}
module TestPipes where
import BetaBin (urn, urnP)
import Control.Monad.Bayes.Class ()
import Control.Monad.Bayes.Enumerator (enumerator)
import Data.AEq (AEq ((~==)))
import HMM (hmm, hmmPosterior)
import Pipes ((>->))
import Pipes.Prelude (toListM)
import qualified Pipes.Prelude as Pipes
urns :: Int -> Bool
urns n = enumerator (urn n) ~== enumerator (urnP n)
hmms :: [Double] -> Bool
hmms observations =
let hmmWithoutPipe = hmm observations
hmmWithPipe = reverse . init <$> toListM (hmmPosterior observations)
in enumerator hmmWithPipe ~== enumerator hmmWithoutPipe