mwc-probability-transition 0.3.0.3 → 0.4
raw patch · 3 files changed
+22/−6 lines, 3 filesdep +exceptionsPVP ok
version bump matches the API change (PVP)
Dependencies added: exceptions
API changes (from Hackage documentation)
+ System.Random.MWC.Probability.Transition: Alert :: Severity
+ System.Random.MWC.Probability.Transition: BatchingOptions :: Int -> Int -> Bool -> BatchingOptions
+ System.Random.MWC.Probability.Transition: Critical :: Severity
+ System.Random.MWC.Probability.Transition: Debug :: Severity
+ System.Random.MWC.Probability.Transition: Emergency :: Severity
+ System.Random.MWC.Probability.Transition: Error :: Severity
+ System.Random.MWC.Probability.Transition: Informational :: Severity
+ System.Random.MWC.Probability.Transition: Notice :: Severity
+ System.Random.MWC.Probability.Transition: Warning :: Severity
+ System.Random.MWC.Probability.Transition: WithSeverity :: Severity -> a -> WithSeverity a
+ System.Random.MWC.Probability.Transition: [blockWhenFull] :: BatchingOptions -> Bool
+ System.Random.MWC.Probability.Transition: [discardSeverity] :: WithSeverity a -> a
+ System.Random.MWC.Probability.Transition: [flushMaxDelay] :: BatchingOptions -> Int
+ System.Random.MWC.Probability.Transition: [flushMaxQueueSize] :: BatchingOptions -> Int
+ System.Random.MWC.Probability.Transition: [msgSeverity] :: WithSeverity a -> Severity
+ System.Random.MWC.Probability.Transition: data BatchingOptions :: *
+ System.Random.MWC.Probability.Transition: data Severity :: *
+ System.Random.MWC.Probability.Transition: data WithSeverity a :: * -> *
+ System.Random.MWC.Probability.Transition: defaultBatchingOptions :: BatchingOptions
+ System.Random.MWC.Probability.Transition: stderr :: Handle
+ System.Random.MWC.Probability.Transition: stdout :: Handle
+ System.Random.MWC.Probability.Transition: type Handler (m :: * -> *) message = message -> m ()
+ System.Random.MWC.Probability.Transition: withBatchedHandler :: (MonadIO io, MonadMask io) => BatchingOptions -> (NonEmpty message -> IO ()) -> (Handler io message -> io a) -> io a
+ System.Random.MWC.Probability.Transition: withFDHandler :: (MonadIO io, MonadMask io) => BatchingOptions -> Handle -> Double -> Int -> (Handler io Doc ann -> io a) -> io a
- System.Random.MWC.Probability.Transition: mkTransition :: Monad m => (s -> Prob m t) -> (s -> t -> (a, s)) -> (a -> s -> message) -> Transition message s m a
+ System.Random.MWC.Probability.Transition: mkTransition :: Monad m => (s -> Prob m t) -> (s -> t -> (a, s)) -> (s -> t -> a -> message) -> Transition message s m a
Files
- mwc-probability-transition.cabal +5/−1
- src/System/Random/MWC/Probability/Transition.hs +16/−4
- test/LibSpec.hs +1/−1
mwc-probability-transition.cabal view
@@ -1,5 +1,5 @@ name: mwc-probability-transition-version: 0.3.0.3+version: 0.4 synopsis: A Markov stochastic transition operator with logging description: .@@ -24,12 +24,16 @@ hs-source-dirs: src exposed-modules: System.Random.MWC.Probability.Transition build-depends: base >= 4.7 && < 5+ , exceptions , ghc-prim , logging-effect , mtl , mwc-probability , primitive , transformers+ -- * DEBUG+ , hspec+ , QuickCheck test-suite spec default-language: Haskell2010
src/System/Random/MWC/Probability/Transition.hs view
@@ -13,13 +13,25 @@ , stepConditional -- * Helper functions , withSeverity+ -- * Re-exported from @logging-effect@+ -- ** Log message severity+ , L.WithSeverity(..), L.Severity(..)+ -- ** Handlers+ , L.Handler, L.withFDHandler+ -- ** Batched logging+ , L.BatchingOptions(..), L.defaultBatchingOptions, L.withBatchedHandler+ -- * Re-exported from @GHC.IO.Handle.FD@+ , stdout, stderr ) where import Control.Monad import Control.Monad.Primitive -import qualified Control.Monad.State as S+-- import Control.Monad.Catch (MonadMask(..))+import GHC.IO.Handle (Handle(..))+import GHC.IO.Handle.FD (stdout, stderr) +import qualified Control.Monad.State as S import Control.Monad.Trans.Class (MonadTrans(..), lift) import Control.Monad.Trans.State.Strict (StateT(..), runStateT) @@ -48,15 +60,15 @@ -- -- 3. a logging message is constructed, using @z@ and @x'@ as arguments. mkTransition :: Monad m =>- (s -> Prob m t) -- ^ Random generation+ (s -> Prob m t) -- ^ Generation of random data -> (s -> t -> (a, s)) -- ^ (Output, Next state)- -> (a -> s -> message) -- ^ Log message construction+ -> (s -> t -> a -> message) -- ^ Log message construction using (Next state, current random data, Output) -> Transition message s m a mkTransition fm fs flog = Transition $ \gen -> do s <- S.get w <- lift . lift $ sample (fm s) gen let (a, s') = fs s w- lift $ L.logMessage $ flog a s' + lift $ L.logMessage $ flog s' w a S.put s' return a
test/LibSpec.hs view
@@ -29,6 +29,6 @@ t01 = mkTransition modelf statef logf where modelf _ = pure (1 :: Double) statef s t = (t, s + 1)- logf _ s = WithSeverity Informational (show s)+ logf s _ _ = WithSeverity Informational (show s)