packages feed

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