monad-bayes-1.1.1: 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 Data.List (sort)
import HMM (hmm, hmmPosterior)
import Pipes.Prelude (toListM)
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 -- Sort enumerator again although it is already sorted, see https://github.com/tweag/monad-bayes/issues/283
sort (enumerator hmmWithPipe) ~== sort (enumerator hmmWithoutPipe)