multistate 0.8.0.0 → 0.8.0.1
raw patch · 11 files changed
+53/−48 lines, 11 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.HList.HList: instance (GHC.Base.Monoid x, GHC.Base.Monoid (Data.HList.HList.HList xs)) => GHC.Base.Monoid (Data.HList.HList.HList (x : xs))
+ Data.HList.HList: instance (Data.Semigroup.Semigroup x, GHC.Base.Monoid x, Data.Semigroup.Semigroup (Data.HList.HList.HList xs), GHC.Base.Monoid (Data.HList.HList.HList xs)) => GHC.Base.Monoid (Data.HList.HList.HList (x : xs))
Files
- changelog.md +7/−2
- multistate.cabal +5/−4
- src/Control/Monad/Trans/MultiGST/Common.hs +1/−1
- src/Control/Monad/Trans/MultiRWS/Lazy.hs +10/−10
- src/Control/Monad/Trans/MultiRWS/Strict.hs +10/−10
- src/Control/Monad/Trans/MultiReader/Lazy.hs +2/−3
- src/Control/Monad/Trans/MultiReader/Strict.hs +2/−3
- src/Control/Monad/Trans/MultiState/Lazy.hs +5/−5
- src/Control/Monad/Trans/MultiState/Strict.hs +5/−5
- src/Data/HList/HList.hs +3/−4
- test/Test.hs +3/−1
changelog.md view
@@ -1,7 +1,12 @@ # Changelog for [`multistate` package](https://hackage.haskell.org/package/multistate) -** 0.8.0.0 *April 2018*+## 0.8.0.1 *October 2018* + * Adapt for ghc-8.6 (really, this time)+ * Make package -Wcompat-ible++## 0.8.0.0 *April 2018*+ * Adapt for ghc-8.4 * Drop support for ghc<8.0 * Add class `MonadMultiGet` that roughly translates to "any read access"@@ -9,7 +14,7 @@ * Add data-type `MultiGST` that has a single taggified HList instead of the three r, w, s lists with `MultiRWS` -** 0.7.1.2 *August 2017*+## 0.7.1.2 *August 2017* * Adapt for ghc-8.2
multistate.cabal view
@@ -1,10 +1,10 @@ Name: multistate-Version: 0.8.0.0+Version: 0.8.0.1 Cabal-Version: >= 1.10 Build-Type: Simple license: BSD3 license-file: LICENSE-Copyright: Copyright (C) 2013-2017 Jan Bracker, 2013-2016 Lennart Spitzner+Copyright: Copyright (C) 2013 Jan Bracker, 2013-2018 Lennart Spitzner Maintainer: Lennart Spitzner <hexagoxel@hexagoxel.de> Author: Jan Bracker, Lennart Spitzner Homepage: https://github.com/lspitzner/multistate@@ -69,7 +69,7 @@ other-modules: Control.Monad.Trans.MultiGST.Common build-depends:- base >= 4.9 && <4.12,+ base >= 4.9 && <4.13, mtl >= 2.1 && <2.3, transformers >= 0.3 && <0.6, tagged >= 0.7 && <0.9,@@ -84,6 +84,7 @@ UndecidableInstances TypeOperators DataKinds+ LambdaCase ghc-options: { -Wall -fno-warn-unused-imports@@ -106,7 +107,7 @@ multistate, base <999, transformers <0.6,- hspec >=2 && <2.5+ hspec >=2 && <2.6 ghc-options: -Wall main-is: Test.hs hs-source-dirs: test
src/Control/Monad/Trans/MultiGST/Common.hs view
@@ -132,7 +132,7 @@ instance Monoid (HListM '[]) where mempty = HNilM- mappend _ _ = HNilM+ mappend = (<>) instance Eq (HListM '[]) where HNilM == HNilM = True
src/Control/Monad/Trans/MultiRWS/Lazy.hs view
@@ -386,18 +386,18 @@ withMultiStates_ (x :+: xs) = withMultiStates_ xs . withMultiState_ x withoutMultiReader :: Monad m => MultiRWST rs w s m a -> MultiRWST (r ': rs) w s m a-withoutMultiReader k = MultiRWST $ do- (rs@(_ :+: rr), w, s) <- get- ~(a, ~(_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (rr, w, s)- put (rs, w', s')- return a+withoutMultiReader k = MultiRWST $ get >>= \case+ (rs@(_ :+: rr), w, s) -> do+ ~(a, ~(_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (rr, w, s)+ put (rs, w', s')+ return a withoutMultiState :: Monad m => MultiRWST r w ss m a -> MultiRWST r w (s ': ss) m a-withoutMultiState k = MultiRWST $ do- (r, w, s :+: sr) <- get- ~(a, ~(_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (r, w, sr)- put (r, w', s :+: s')- return a+withoutMultiState k = MultiRWST $ get >>= \case+ (r, w, s :+: sr) -> do+ ~(a, ~(_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (r, w, sr)+ put (r, w', s :+: s')+ return a inflateReader :: (Monad m, ContainsType r rs) => ReaderT r m a
src/Control/Monad/Trans/MultiRWS/Strict.hs view
@@ -388,18 +388,18 @@ withMultiStates_ (x :+: xs) = withMultiStates_ xs . withMultiState_ x withoutMultiReader :: Monad m => MultiRWST rs w s m a -> MultiRWST (r ': rs) w s m a-withoutMultiReader k = MultiRWST $ do- (rs@(_ :+: rr), w, s) <- get- (a, (_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (rr, w, s)- put (rs, w', s')- return a+withoutMultiReader k = MultiRWST $ get >>= \case+ (rs@(_ :+: rr), w, s) -> do+ (a, (_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (rr, w, s)+ put (rs, w', s')+ return a withoutMultiState :: Monad m => MultiRWST r w ss m a -> MultiRWST r w (s ': ss) m a-withoutMultiState k = MultiRWST $ do- (r, w, s :+: sr) <- get- (a, (_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (r, w, sr)- put (r, w', s :+: s')- return a+withoutMultiState k = MultiRWST $ get >>= \case+ (r, w, s :+: sr) -> do+ (a, (_, w', s')) <- lift $ runStateT (runMultiRWSTRaw k) (r, w, sr)+ put (r, w', s :+: s')+ return a inflateReader :: (Monad m, ContainsType r rs) => ReaderT r m a
src/Control/Monad/Trans/MultiReader/Lazy.hs view
@@ -186,9 +186,8 @@ withMultiReaders_ (x :+: xs) = withMultiReaders_ xs . withMultiReader_ x withoutMultiReader :: Monad m => MultiReaderT rs m a -> MultiReaderT (r ': rs) m a-withoutMultiReader k = MultiReaderT $ do- _ :+: rr <- get- lift $ runMultiReaderT rr k+withoutMultiReader k = MultiReaderT $ get >>= \case+ (_ :+: rr) -> lift $ runMultiReaderT rr k inflateReader :: (Monad m, ContainsType r rs) => ReaderT r m a
src/Control/Monad/Trans/MultiReader/Strict.hs view
@@ -186,9 +186,8 @@ withMultiReaders_ (x :+: xs) = withMultiReaders_ xs . withMultiReader_ x withoutMultiReader :: Monad m => MultiReaderT rs m a -> MultiReaderT (r ': rs) m a-withoutMultiReader k = MultiReaderT $ do- _ :+: rr <- get- lift $ runMultiReaderT rr k+withoutMultiReader k = MultiReaderT $ get >>= \case+ (_ :+: rr) -> lift $ runMultiReaderT rr k inflateReader :: (Monad m, ContainsType r rs) => ReaderT r m a
src/Control/Monad/Trans/MultiState/Lazy.hs view
@@ -239,11 +239,11 @@ withMultiStates_ (x :+: xs) = withMultiStates_ xs . withMultiState_ x withoutMultiState :: (Functor m, Monad m) => MultiStateT ss m a -> MultiStateT (s ': ss) m a-withoutMultiState k = MultiStateT $ do- s :+: sr <- get- ~(a, sr') <- lift $ runMultiStateT sr k- put (s :+: sr')- return a+withoutMultiState k = MultiStateT $ get >>= \case+ s :+: sr -> do+ ~(a, sr') <- lift $ runMultiStateT sr k+ put (s :+: sr')+ return a inflateState :: (Monad m, ContainsType s ss) => StateT s m a
src/Control/Monad/Trans/MultiState/Strict.hs view
@@ -237,11 +237,11 @@ withMultiStates_ (x :+: xs) = withMultiStates_ xs . withMultiState_ x withoutMultiState :: (Functor m, Monad m) => MultiStateT ss m a -> MultiStateT (s ': ss) m a-withoutMultiState k = MultiStateT $ do- s :+: sr <- get- (a, sr') <- lift $ runMultiStateT sr k- put (s :+: sr')- return a+withoutMultiState k = MultiStateT $ get >>= \case+ s :+: sr -> do+ (a, sr') <- lift $ runMultiStateT sr k+ put (s :+: sr')+ return a inflateState :: (Monad m, ContainsType s ss) => StateT s m a
src/Data/HList/HList.hs view
@@ -52,13 +52,12 @@ instance Monoid (HList '[]) where mempty = HNil- mappend _ _ = HNil-instance (Monoid x, Monoid (HList xs))+ mappend = (<>)+instance (Semigroup x, Monoid x, Semigroup (HList xs), Monoid (HList xs)) => Monoid (HList (x ': xs)) where mempty = mempty :+: mempty- mappend (x1 :+: xs1) (x2 :+: xs2) = (x1 `mappend` x2)- :+: (xs1 `mappend` xs2)+ mappend = (<>) instance Eq (HList '[]) where HNil == HNil = True
test/Test.hs view
@@ -12,6 +12,8 @@ import Data.Functor.Identity import Data.HList.HList import Data.Monoid+import Data.Semigroup+ import qualified Control.Monad.Trans.MultiState as MS import qualified Control.Monad.Trans.MultiReader as MR import qualified Control.Monad.Trans.MultiWriter as MW@@ -35,7 +37,7 @@ runnerMS x m = runEvalMS $ MS.withMultiStateA x m runnerMR :: a -> MR.MultiReaderT '[a] Identity a -> a runnerMR x m = runEvalMR $ MR.withMultiReader x m-runnerMW :: Monoid a => MW.MultiWriterT '[a] Identity b -> a+runnerMW :: (Semigroup a, Monoid a) => MW.MultiWriterT '[a] Identity b -> a runnerMW m = case runExecMW m of (x :+: _) -> x -- TODO: ghc bug?: warning on: -- runnerMW m = case runExecMW m of (x :+: HNil) -> x