commit 6ab413d748616ae48e0ddaf659f5e2728c7d3424
parent 5cf45e0185bb03557f3b3219e074f1ab868385fb
Author: Jared Tobin <jared@jtobin.ca>
Date: Tue, 20 Dec 2016 07:23:20 +1300
Generalize base monad.
Diffstat:
5 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,6 +1,10 @@
# Changelog
+- 0.4.0 (2016-12-20)
+ * Generalize base monad requirement to something matching both MonadIO and
+ PrimState.
+
- 0.3.4 (2016-12-04)
- * Add missing dependency bounds.
+ * Add missing dependency bounds.
diff --git a/declarative.cabal b/declarative.cabal
@@ -1,5 +1,5 @@
name: declarative
-version: 0.3.4
+version: 0.4.0
synopsis: DIY Markov Chains.
homepage: http://github.com/jtobin/declarative
license: MIT
diff --git a/lib/Numeric/MCMC.hs b/lib/Numeric/MCMC.hs
@@ -87,6 +87,7 @@ module Numeric.MCMC (
, RealWorld
) where
+import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Primitive (PrimMonad, PrimState, RealWorld)
import Control.Monad.Trans.State.Strict (execStateT)
import Data.Sampling.Types
@@ -152,17 +153,17 @@ frequency xs = lift (MWC.uniformR (1, tot)) >>= (`pick` xs) where
-- 1.4541485365128892e-2,-0.4859905564050404
-- 0.22487398491619448,-0.29769783186855125
mcmc
- :: Show (t a)
+ :: (MonadIO m, PrimMonad m, Show (t a))
=> Int
-> t a
- -> Transition IO (Chain (t a) b)
+ -> Transition m (Chain (t a) b)
-> Target (t a)
- -> Gen RealWorld
- -> IO ()
+ -> Gen (PrimState m)
+ -> m ()
mcmc n chainPosition transition chainTarget gen = runEffect $
chain transition Chain {..} gen
>-> Pipes.take n
- >-> Pipes.mapM_ print
+ >-> Pipes.mapM_ (liftIO . print)
where
chainScore = lTarget chainTarget chainPosition
chainTunables = Nothing
diff --git a/stack-travis.yaml b/stack-travis.yaml
@@ -2,7 +2,7 @@ flags: {}
packages:
- '.'
extra-deps: []
-resolver: lts-7.11
+resolver: lts-7.14
compiler: ghc-8.0.1
system-ghc: false
install-ghc: true
diff --git a/stack.yaml b/stack.yaml
@@ -1,4 +1,4 @@
-resolver: lts-7.11
+resolver: lts-7.14
packages: ['.']
extra-deps: []
flags: {}