multistate 0.8.0.3 → 0.8.0.4
raw patch · 13 files changed
+70/−62 lines, 13 filesdep ~basedep ~hspecdep ~mtl
Dependency ranges changed: base, hspec, mtl, transformers
Files
- changelog.md +5/−0
- multistate.cabal +4/−3
- src/Control/Monad/Trans/MultiGST/Common.hs +1/−1
- src/Control/Monad/Trans/MultiGST/Lazy.hs +1/−0
- src/Control/Monad/Trans/MultiGST/Strict.hs +1/−0
- src/Control/Monad/Trans/MultiRWS/Lazy.hs +1/−1
- src/Control/Monad/Trans/MultiRWS/Strict.hs +1/−1
- src/Control/Monad/Trans/MultiReader/Lazy.hs +9/−9
- src/Control/Monad/Trans/MultiReader/Strict.hs +9/−9
- src/Control/Monad/Trans/MultiState/Lazy.hs +11/−11
- src/Control/Monad/Trans/MultiState/Strict.hs +11/−11
- src/Control/Monad/Trans/MultiWriter/Lazy.hs +8/−8
- src/Control/Monad/Trans/MultiWriter/Strict.hs +8/−8
changelog.md view
@@ -1,5 +1,10 @@ # Changelog for [`multistate` package](https://hackage.haskell.org/package/multistate) +## 0.8.0.4 *January 2022*++ * Adapt for ghc-9.0 and ghc-9.2+ * Clean up code a bit, fix compiler warnings (thanks sergv)+ ## 0.8.0.3 *May 2020* * Adapt for ghc-8.10
multistate.cabal view
@@ -1,5 +1,5 @@ Name: multistate-Version: 0.8.0.3+Version: 0.8.0.4 Cabal-Version: >= 1.10 Build-Type: Simple license: BSD3@@ -68,7 +68,7 @@ other-modules: Control.Monad.Trans.MultiGST.Common build-depends:- base >= 4.11 && <4.15,+ base >= 4.11 && <4.17, mtl >= 2.1 && <2.3, transformers >= 0.3 && <0.6, tagged >= 0.7 && <0.9,@@ -79,6 +79,7 @@ TypeFamilies MultiParamTypeClasses FunctionalDependencies+ FlexibleContexts FlexibleInstances UndecidableInstances TypeOperators@@ -103,7 +104,7 @@ multistate, base <999, transformers <0.6,- hspec >=2 && <2.8+ hspec >=2 && <2.9 ghc-options: -Wall main-is: Test.hs hs-source-dirs: test
src/Control/Monad/Trans/MultiGST/Common.hs view
@@ -1,9 +1,9 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE UndecidableSuperClasses #-} {-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-} -- | Common definitions for MultiGST.Strict and MultiGST.Lazy module Control.Monad.Trans.MultiGST.Common
src/Control/Monad/Trans/MultiGST/Lazy.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE UndecidableSuperClasses #-}+{-# LANGUAGE FlexibleContexts #-} -- | Alternative multi-valued version of mtl's RWS / RWST. In contrast to -- @'MultiRWS'(T)@ this version only takes a single list of types as
src/Control/Monad/Trans/MultiGST/Strict.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE UndecidableSuperClasses #-}+{-# LANGUAGE FlexibleContexts #-} -- | Alternative multi-valued version of mtl's RWS / RWST. In contrast to -- @'MultiRWS'(T)@ this version only takes a single list of types as
src/Control/Monad/Trans/MultiRWS/Lazy.hs view
@@ -135,7 +135,7 @@ (<*>) = ap instance (Monad m) => Monad (MultiRWST r w s m) where- return = MultiRWST . return+ return = pure k >>= f = MultiRWST $ runMultiRWSTRaw k >>= runMultiRWSTRaw . f instance MonadTrans (MultiRWST r w s) where
src/Control/Monad/Trans/MultiRWS/Strict.hs view
@@ -136,7 +136,7 @@ (<*>) = ap instance (Monad m) => Monad (MultiRWST r w s m) where- return = MultiRWST . return+ return = pure k >>= f = MultiRWST $ runMultiRWSTRaw k >>= runMultiRWSTRaw . f instance MonadTrans (MultiRWST r w s) where
src/Control/Monad/Trans/MultiReader/Lazy.hs view
@@ -76,23 +76,23 @@ -- | A Reader transformer monad patameterized by:--- +-- -- * x - The list of types constituting the environment / input (to be read), -- * m - The inner monad.--- +-- -- 'MultiReaderT' corresponds to mtl's 'ReaderT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiReaderT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a Reader transformer containing the types [Int, Bool]. newtype MultiReaderT x m a = MultiReaderT { runMultiReaderTRaw :: StateT (HList x) m a@@ -115,7 +115,7 @@ (<*>) = ap instance Monad m => Monad (MultiReaderT x m) where- return = MultiReaderT . return+ return = pure k >>= f = MultiReaderT $ runMultiReaderTRaw k >>= runMultiReaderTRaw . f instance MonadTrans (MultiReaderT x) where@@ -209,7 +209,7 @@ runMultiReaderTRaw pass = MultiReaderT . mapStateT (pass . liftM (\(~(~(a, f), w)) -> ((a, w), f))) .- runMultiReaderTRaw + runMultiReaderTRaw instance MonadIO m => MonadIO (MultiReaderT c m) where liftIO = lift . liftIO
src/Control/Monad/Trans/MultiReader/Strict.hs view
@@ -76,23 +76,23 @@ -- | A Reader transformer monad patameterized by:--- +-- -- * x - The list of types constituting the environment / input (to be read), -- * m - The inner monad.--- +-- -- 'MultiReaderT' corresponds to mtl's 'ReaderT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiReaderT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a Reader transformer containing the types [Int, Bool]. newtype MultiReaderT x m a = MultiReaderT { runMultiReaderTRaw :: StateT (HList x) m a@@ -115,7 +115,7 @@ (<*>) = ap instance Monad m => Monad (MultiReaderT x m) where- return = MultiReaderT . return+ return = pure k >>= f = MultiReaderT $ runMultiReaderTRaw k >>= (runMultiReaderTRaw . f) instance MonadTrans (MultiReaderT x) where@@ -209,7 +209,7 @@ runMultiReaderTRaw pass = MultiReaderT . mapStateT (pass . liftM (\((a, f), w) -> ((a, w), f))) .- runMultiReaderTRaw + runMultiReaderTRaw instance MonadIO m => MonadIO (MultiReaderT c m) where liftIO = lift . liftIO
src/Control/Monad/Trans/MultiState/Lazy.hs view
@@ -92,23 +92,23 @@ -- | A State transformer monad patameterized by:--- +-- -- * x - The list of types constituting the state, -- * m - The inner monad.--- +-- -- 'MultiStateT' corresponds to mtl's 'StateT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiStateT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a State wrapper containing the types [Int, Bool]. newtype MultiStateT x m a = MultiStateT { runMultiStateTRaw :: StateT (HList x) m a@@ -132,7 +132,7 @@ (<*>) = ap instance Monad m => Monad (MultiStateT x m) where- return = MultiStateT . return+ return = pure k >>= f = MultiStateT $ runMultiStateTRaw k >>= (runMultiStateTRaw.f) instance MonadTrans (MultiStateT x) where@@ -223,11 +223,11 @@ withMultiStates = withMultiStatesAS withMultiStatesAS HNil = liftM (\r -> (r, HNil)) withMultiStatesAS (x :+: xs) = liftM (\(~(~(a, x'), xs')) -> (a, x' :+: xs'))- . withMultiStatesAS xs + . withMultiStatesAS xs . withMultiStateAS x withMultiStatesSA HNil = liftM (\r -> (HNil, r)) withMultiStatesSA (x :+: xs) = liftM (\(~(~(a, x'), xs')) -> (x' :+: xs', a))- . withMultiStatesAS xs + . withMultiStatesAS xs . withMultiStateAS x withMultiStatesA HNil = id withMultiStatesA (x :+: xs) = withMultiStatesA xs . withMultiStateA x@@ -282,7 +282,7 @@ runMultiStateTRaw pass = MultiStateT . mapStateT (pass . liftM (\(~(~(a, f), w)) -> ((a, w), f))) .- runMultiStateTRaw + runMultiStateTRaw instance MonadIO m => MonadIO (MultiStateT c m) where liftIO = lift . liftIO
src/Control/Monad/Trans/MultiState/Strict.hs view
@@ -92,23 +92,23 @@ -- | A State transformer monad patameterized by:--- +-- -- * x - The list of types constituting the state, -- * m - The inner monad.--- +-- -- 'MultiStateT' corresponds to mtl's 'StateT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiStateT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a State wrapper containing the types [Int, Bool]. newtype MultiStateT x m a = MultiStateT { runMultiStateTRaw :: StateT (HList x) m a@@ -130,7 +130,7 @@ (<*>) = ap instance Monad m => Monad (MultiStateT x m) where- return = MultiStateT . return+ return = pure k >>= f = MultiStateT $ runMultiStateTRaw k >>= (runMultiStateTRaw.f) instance MonadTrans (MultiStateT x) where@@ -221,11 +221,11 @@ withMultiStates = withMultiStatesAS withMultiStatesAS HNil = liftM (\r -> (r, HNil)) withMultiStatesAS (x :+: xs) = liftM (\((a, x'), xs') -> (a, x' :+: xs'))- . withMultiStatesAS xs + . withMultiStatesAS xs . withMultiStateAS x withMultiStatesSA HNil = liftM (\r -> (HNil, r)) withMultiStatesSA (x :+: xs) = liftM (\((a, x'), xs') -> (x' :+: xs', a))- . withMultiStatesAS xs + . withMultiStatesAS xs . withMultiStateAS x withMultiStatesA HNil = id withMultiStatesA (x :+: xs) = withMultiStatesA xs . withMultiStateA x@@ -280,7 +280,7 @@ runMultiStateTRaw pass = MultiStateT . mapStateT (pass . liftM (\((a, f), w) -> ((a, w), f))) .- runMultiStateTRaw + runMultiStateTRaw instance MonadIO m => MonadIO (MultiStateT c m) where liftIO = lift . liftIO
src/Control/Monad/Trans/MultiWriter/Lazy.hs view
@@ -85,23 +85,23 @@ -- | A Writer transformer monad patameterized by:--- +-- -- * x - The list of types that can be written (Monoid instances). -- * m - The inner monad.--- +-- -- 'MultiWriterT' corresponds to mtl's 'WriterT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiWriterT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a Writer transformer containing the types [Int, Bool]. newtype MultiWriterT x m a = MultiWriterT { runMultiWriterTRaw :: StateT (HList x) m a@@ -120,7 +120,7 @@ (<*>) = ap instance Monad m => Monad (MultiWriterT x m) where- return = MultiWriterT . return+ return = pure k >>= f = MultiWriterT $ runMultiWriterTRaw k >>= (runMultiWriterTRaw . f) instance MonadTrans (MultiWriterT x) where
src/Control/Monad/Trans/MultiWriter/Strict.hs view
@@ -85,23 +85,23 @@ -- | A Writer transformer monad patameterized by:--- +-- -- * x - The list of types that can be written (Monoid instances). -- * m - The inner monad.--- +-- -- 'MultiWriterT' corresponds to mtl's 'WriterT', but can contain -- a heterogenous list of types.--- +-- -- This heterogenous list is represented using Types.Data.List, i.e:--- +-- -- * @'[]@ - The empty list, -- * @a ': b@ - A list where @/a/@ is an arbitrary type -- and @/b/@ is the rest list.--- +-- -- For example,--- +-- -- > MultiWriterT '[Int, Bool] :: (* -> *) -> (* -> *)--- +-- -- is a Writer transformer containing the types [Int, Bool]. newtype MultiWriterT x m a = MultiWriterT { runMultiWriterTRaw :: StateT (HList x) m a@@ -120,7 +120,7 @@ (<*>) = ap instance Monad m => Monad (MultiWriterT x m) where- return = MultiWriterT . return+ return = pure k >>= f = MultiWriterT $ runMultiWriterTRaw k >>= (runMultiWriterTRaw.f) instance MonadTrans (MultiWriterT x) where