packages feed

ether 0.1.0.0 → 0.1.0.1

raw patch · 16 files changed

+117/−67 lines, 16 filesdep ~basedep ~template-haskellPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base, template-haskell

API changes (from Hackage documentation)

- Control.Ether.Wrapped: [WrapEther] :: m a -> WrappedEther tag m a
- Control.Ether.Wrapped: [unwrapEther] :: WrappedEther tag m a -> m a
- Control.Monad.Ether.Except.Class: instance (Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT tag' w m)
- Control.Monad.Ether.Except.Class: instance (Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT w m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (ExceptT e' m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (ExceptT tag' e' m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (IdentityT m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (ListT m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (MaybeT m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (ReaderT r m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (ReaderT tag' r m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (StateT s m)
- Control.Monad.Ether.Except.Class: instance MonadExcept tag e m => MonadExcept tag e (StateT tag' s m)
- Control.Monad.Ether.Except.Class: instance [overlapping] Monad m => MonadExcept tag e (ExceptT tag e m)
- Control.Monad.Ether.Reader.Class: instance (Monoid w, MonadReader tag r m) => MonadReader tag r (WriterT tag' w m)
- Control.Monad.Ether.Reader.Class: instance (Monoid w, MonadReader tag r m) => MonadReader tag r (WriterT w m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ContT r' m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ExceptT e m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ExceptT tag' e m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (IdentityT m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ListT m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (MaybeT m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ReaderT r' m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (ReaderT tag' r' m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (StateT s m)
- Control.Monad.Ether.Reader.Class: instance MonadReader tag r m => MonadReader tag r (StateT tag' s m)
- Control.Monad.Ether.Reader.Class: instance [overlapping] Monad m => MonadReader tag r (ReaderT tag r m)
- Control.Monad.Ether.State.Class: instance (Monoid w, MonadState tag s m) => MonadState tag s (WriterT tag' w m)
- Control.Monad.Ether.State.Class: instance (Monoid w, MonadState tag s m) => MonadState tag s (WriterT w m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ContT r m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ExceptT e m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ExceptT tag' e m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (IdentityT m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ListT m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (MaybeT m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ReaderT r m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (ReaderT tag' r m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (StateT s' m)
- Control.Monad.Ether.State.Class: instance MonadState tag s m => MonadState tag s (StateT tag' s' m)
- Control.Monad.Ether.State.Class: instance [overlapping] Monad m => MonadState tag s (StateT tag s m)
- Control.Monad.Ether.Writer.Class: instance (Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT tag' w' m)
- Control.Monad.Ether.Writer.Class: instance (Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT w' m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (ExceptT e m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (ExceptT tag' e m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (IdentityT m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (MaybeT m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (ReaderT r m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (ReaderT tag' r m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (StateT s m)
- Control.Monad.Ether.Writer.Class: instance MonadWriter tag w m => MonadWriter tag w (StateT tag' e m)
- Control.Monad.Ether.Writer.Class: instance [overlapping] (Monoid w, Monad m) => MonadWriter tag w (WriterT tag w m)
- Control.Monad.Trans.Ether.Except: instance (Monad m, Monoid e) => Alternative (ExceptT tag e m)
- Control.Monad.Trans.Ether.Except: instance Monad m => Applicative (ExceptT tag e m)
- Control.Monad.Trans.Ether.State.Lazy: instance Monad m => Applicative (StateT tag s m)
- Control.Monad.Trans.Ether.State.Lazy: instance MonadPlus m => Alternative (StateT tag s m)
- Control.Monad.Trans.Ether.State.Strict: instance Monad m => Applicative (StateT tag s m)
- Control.Monad.Trans.Ether.State.Strict: instance MonadPlus m => Alternative (StateT tag s m)
- Control.Monad.Trans.Ether.Writer: instance (Monoid w, Alternative m) => Alternative (WriterT tag w m)
- Control.Monad.Trans.Ether.Writer: instance (Monoid w, MonadPlus m) => MonadPlus (WriterT tag w m)
+ Control.Ether.Wrapped: WrapEther :: m a -> WrappedEther tag m a
+ Control.Ether.Wrapped: unwrapEther :: WrappedEther tag m a -> m a
+ Control.Monad.Ether.Except.Class: instance [overlap ok] (Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT tag' w m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] (Monoid w, MonadExcept tag e m) => MonadExcept tag e (WriterT w m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] Monad m => MonadExcept tag e (ExceptT tag e m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (ExceptT e' m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (ExceptT tag' e' m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (IdentityT m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (ListT m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (MaybeT m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (ReaderT r m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (ReaderT tag' r m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (StateT s m)
+ Control.Monad.Ether.Except.Class: instance [overlap ok] MonadExcept tag e m => MonadExcept tag e (StateT tag' s m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] (Monoid w, MonadReader tag r m) => MonadReader tag r (WriterT tag' w m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] (Monoid w, MonadReader tag r m) => MonadReader tag r (WriterT w m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] Monad m => MonadReader tag r (ReaderT tag r m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ContT r' m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ExceptT e m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ExceptT tag' e m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (IdentityT m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ListT m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (MaybeT m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ReaderT r' m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (ReaderT tag' r' m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (StateT s m)
+ Control.Monad.Ether.Reader.Class: instance [overlap ok] MonadReader tag r m => MonadReader tag r (StateT tag' s m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] (Monoid w, MonadState tag s m) => MonadState tag s (WriterT tag' w m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] (Monoid w, MonadState tag s m) => MonadState tag s (WriterT w m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] Monad m => MonadState tag s (StateT tag s m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ContT r m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ExceptT e m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ExceptT tag' e m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (IdentityT m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ListT m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (MaybeT m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ReaderT r m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (ReaderT tag' r m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (StateT s' m)
+ Control.Monad.Ether.State.Class: instance [overlap ok] MonadState tag s m => MonadState tag s (StateT tag' s' m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] (Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT tag' w' m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] (Monoid w', MonadWriter tag w m) => MonadWriter tag w (WriterT w' m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] (Monoid w, Monad m) => MonadWriter tag w (WriterT tag w m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (ExceptT e m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (ExceptT tag' e m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (IdentityT m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (MaybeT m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (ReaderT r m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (ReaderT tag' r m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (StateT s m)
+ Control.Monad.Ether.Writer.Class: instance [overlap ok] MonadWriter tag w m => MonadWriter tag w (StateT tag' e m)
+ Control.Monad.Trans.Ether.Except: instance (Monad m, Functor m) => Applicative (ExceptT tag e m)
+ Control.Monad.Trans.Ether.Except: instance (Monad m, Functor m, Monoid e) => Alternative (ExceptT tag e m)
+ Control.Monad.Trans.Ether.State.Lazy: instance (Functor m, MonadPlus m) => Alternative (StateT tag s m)
+ Control.Monad.Trans.Ether.State.Lazy: instance (Monad m, Functor m) => Applicative (StateT tag s m)
+ Control.Monad.Trans.Ether.State.Strict: instance (Functor m, MonadPlus m) => Alternative (StateT tag s m)
+ Control.Monad.Trans.Ether.State.Strict: instance (Monad m, Functor m) => Applicative (StateT tag s m)
+ Control.Monad.Trans.Ether.Writer: instance (Alternative m, Monoid w) => Alternative (WriterT tag w m)
+ Control.Monad.Trans.Ether.Writer: instance (MonadPlus m, Monoid w) => MonadPlus (WriterT tag w m)
- Control.Ether.Tagged: class Taggable (m :: * -> *) where type family Tag m :: Maybe * type family Inner m :: Maybe (* -> *) Tag m = Nothing Inner m = Nothing
+ Control.Ether.Tagged: class Taggable (m :: * -> *) where type family Tag m :: Maybe * type family Inner m :: Maybe (* -> *) type instance Tag m = Nothing type instance Inner m = Nothing

Files

+ CHANGELOG.md view
@@ -0,0 +1,6 @@+0.1.0.1+-------++* Fix `transformers` lower bound.+* Remove unused language extensions.+* GHC 7.8 compatibility.
ether.cabal view
@@ -1,5 +1,5 @@ name:                ether-version:             0.1.0.0+version:             0.1.0.1 synopsis:            Monad transformers and classes description:     Ether is a Haskell library that extends @mtl@ and @transformers@ with@@ -13,7 +13,8 @@ homepage:            https://int-index.github.io/ether/ bug-reports:         https://github.com/int-index/ether/issues build-type:          Simple-cabal-version:       >=1.22+cabal-version:       >=1.18+extra-source-files:  CHANGELOG.md  source-repository head @@ -52,21 +53,37 @@    other-modules:       Control.Ether.Util -  build-depends:       base >=4.8 && <4.9-               ,       transformers >=0.4.0.3+  build-depends:       base >=4.7 && <4.9+               ,       transformers >=0.4.2                ,       mtl >=2.2.1-               ,       template-haskell >=2.10+               ,       template-haskell >=2.9                ,       newtype-generics >=0.4.1 -  hs-source-dirs:      src   default-language:    Haskell2010+  other-extensions:    DeriveGeneric+                       MultiParamTypeClasses+                       TypeFamilies+                       FlexibleInstances+                       UndecidableInstances+                       DataKinds+                       GeneralizedNewtypeDeriving+                       FunctionalDependencies+                       ConstraintKinds+                       ScopedTypeVariables+                       TemplateHaskell+                       PolyKinds+                       TypeOperators+                       DefaultSignatures+                       CPP++  hs-source-dirs:      src   ghc-options:         -Wall   test-suite regression -  build-depends:       base >=4.8 && <4.9-               ,       transformers >=0.4.0.3+  build-depends:       base >=4.7 && <4.9+               ,       transformers >=0.4.2                ,       mtl >=2.2.1                ,       tasty >=0.10                ,       tasty-quickcheck >=0.8
src/Control/Ether/Tagged.hs view
@@ -4,7 +4,6 @@ {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FunctionalDependencies #-}
src/Control/Ether/Util.hs view
@@ -1,4 +1,6 @@-{-# LANGUAGE DataKinds, PolyKinds #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeFamilies #-} module Control.Ether.Util@@ -7,12 +9,20 @@     , liftPass_WriterT     , type (++)     , MaybeToList+    , fmap     ) where  import qualified Control.Monad.Signatures as Sig import qualified Control.Monad.Trans.Except as Trans import qualified Control.Monad.Trans.Writer as Trans+import Prelude hiding (fmap) +#if __GLASGOW_HASKELL__ < 710+import qualified Control.Monad+#else+import qualified Prelude+#endif+ type family (as :: [*]) ++ (bs :: [*]) :: [*] where     '[] ++ bs = bs     (a ': as) ++ bs = a ': (as ++ bs)@@ -35,3 +45,13 @@ liftPass_WriterT pass m = Trans.WriterT $ pass $ do     ~((a, f), w) <- Trans.runWriterT m     return ((a, w), f)++#if __GLASGOW_HASKELL__ < 710+fmap :: Monad f => (a -> b) -> f a -> f b+fmap = Control.Monad.liftM +#else+fmap :: Functor f => (a -> b) -> f a -> f b+fmap = Prelude.fmap +#endif++{-# INLINE fmap #-}
src/Control/Ether/Wrapped.hs view
@@ -1,6 +1,5 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}@@ -28,7 +27,7 @@     ) where  import Data.Proxy (Proxy(Proxy))-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.IO.Class (MonadIO)
src/Control/Monad/Ether/Except/Class.hs view
@@ -1,21 +1,24 @@+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}++{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-} +#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif+ -- | See "Control.Monad.Except".  module Control.Monad.Ether.Except.Class     ( MonadExcept(..)     ) where++#if __GLASGOW_HASKELL__ < 710+import Data.Monoid+#endif  import Data.Proxy (Proxy(Proxy)) import Control.Monad.Trans (lift)
src/Control/Monad/Ether/Implicit/Except/TH.hs view
@@ -10,7 +10,7 @@  -- | Basic building block for 'try'. Runs an 'ExceptT' with a handler. try' :: Functor m => ExceptT e m a -> (e -> a) -> m a-try' m h = either h id <$> runExceptT m+try' m h = fmap (either h id) (runExceptT m)  -- | Handle @n@ exceptions with supplied handlers. --
src/Control/Monad/Ether/Reader/Class.hs view
@@ -1,16 +1,15 @@+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}++{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-} +#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif+ -- | See "Control.Monad.Reader.Class".  module Control.Monad.Ether.Reader.Class@@ -18,6 +17,10 @@     , asks     ) where +#if __GLASGOW_HASKELL__ < 710+import Data.Monoid+#endif+ import Data.Proxy (Proxy(Proxy)) import Control.Monad.Trans (lift) @@ -27,6 +30,7 @@ import qualified Control.Monad.Trans.Ether.Reader as R import qualified Control.Monad.Trans.Ether.State.Lazy   as S.L import qualified Control.Monad.Trans.Ether.State.Strict as S.S+import qualified Control.Ether.Util as Util  -- for mtl instances import qualified Control.Monad.Trans.Cont          as Trans        (ContT    , liftLocal)@@ -64,7 +68,7 @@         -> (r -> a)         -- ^ The selector function to apply to the environment.         -> m a-    reader t f = fmap f (ask t)+    reader t f = Util.fmap f (ask t)  -- | Retrieves a function of the current environment. asks
src/Control/Monad/Ether/State/Class.hs view
@@ -1,16 +1,15 @@+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}++{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-} +#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif+ -- | See "Control.Monad.State.Class".  module Control.Monad.Ether.State.Class@@ -19,6 +18,10 @@     , gets     ) where +#if __GLASGOW_HASKELL__ < 710+import Data.Monoid+#endif+ import Control.Monad.Trans (lift)  import Control.Monad.Trans.Ether.Reader (ReaderT)@@ -26,6 +29,7 @@ import Control.Monad.Trans.Ether.Except (ExceptT) import qualified Control.Monad.Trans.Ether.State.Lazy   as S.L import qualified Control.Monad.Trans.Ether.State.Strict as S.S+import qualified Control.Ether.Util as Util  -- for mtl instances import qualified Control.Monad.Trans.Cont          as Trans        (ContT)@@ -66,7 +70,7 @@  -- | Gets specific component of the state, using a projection function supplied. gets :: MonadState tag s m => proxy tag -> (s -> a) -> m a-gets t f = fmap f (get t)+gets t f = Util.fmap f (get t)  instance {-# OVERLAPPING #-} Monad m => MonadState tag s (S.L.StateT tag s m) where     get = S.L.get
src/Control/Monad/Ether/Writer/Class.hs view
@@ -1,16 +1,15 @@+{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}++{-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE FunctionalDependencies #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-} +#if __GLASGOW_HASKELL__ < 710+{-# LANGUAGE OverlappingInstances #-}+#endif+ -- | See "Control.Monad.Writer.Class".  module Control.Monad.Ether.Writer.Class@@ -18,6 +17,10 @@     , listens     , censor     ) where++#if __GLASGOW_HASKELL__ < 710+import Data.Monoid+#endif  import Data.Proxy (Proxy(Proxy)) import Control.Monad.Trans (lift)
src/Control/Monad/Trans/Ether/Except.hs view
@@ -2,10 +2,8 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}  -- | See "Control.Monad.Trans.Except".@@ -34,7 +32,7 @@ import Data.Proxy (Proxy(Proxy)) import Data.Functor.Identity (Identity(..)) import Data.Coerce (coerce)-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.Trans.Class (MonadTrans, lift)
src/Control/Monad/Trans/Ether/Reader.hs view
@@ -2,10 +2,8 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}  -- | See "Control.Monad.Trans.Reader".@@ -33,7 +31,7 @@ import Data.Proxy (Proxy(Proxy)) import Data.Functor.Identity (Identity(..)) import Data.Coerce (coerce)-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.Trans.Class (MonadTrans, lift)
src/Control/Monad/Trans/Ether/State/Lazy.hs view
@@ -2,10 +2,8 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}  -- | See "Control.Monad.Trans.State.Lazy".@@ -38,7 +36,7 @@ import Data.Proxy (Proxy(Proxy)) import Data.Functor.Identity (Identity(..)) import Data.Coerce (coerce)-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.Trans.Class (MonadTrans, lift)
src/Control/Monad/Trans/Ether/State/Strict.hs view
@@ -2,10 +2,8 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}  -- | See "Control.Monad.Trans.State.Strict".@@ -38,7 +36,7 @@ import Data.Proxy (Proxy(Proxy)) import Data.Functor.Identity (Identity(..)) import Data.Coerce (coerce)-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.Trans.Class (MonadTrans, lift)
src/Control/Monad/Trans/Ether/Writer.hs view
@@ -1,11 +1,10 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}  -- | See "Control.Monad.Trans.Writer".@@ -34,10 +33,14 @@     , liftPass     ) where +#if __GLASGOW_HASKELL__ < 710+import Data.Monoid+#endif+ import Data.Proxy (Proxy(Proxy)) import Data.Functor.Identity (Identity(..)) import Data.Coerce (coerce)-import Control.Applicative (Alternative)+import Control.Applicative import Control.Monad (MonadPlus) import Control.Monad.Fix (MonadFix) import Control.Monad.Trans.Class (MonadTrans, lift)
test/Regression.hs view
@@ -9,7 +9,7 @@  import Data.Functor.Identity import Data.Monoid-import Data.Foldable+import Control.Monad import Control.Ether.Tagged import Control.Ether.TH import Control.Ether.Wrapped@@ -182,7 +182,7 @@ exceptCore' :: Double -> Double -> String exceptCore' a b = runIdentity $ do     $(try 2)-        (show <$> exceptCore a b)+        (liftM show (exceptCore a b))         (\(NegativeLog (x::Double)) -> "nl: " ++ show x)         (\DivideByZero -> "dz") @@ -192,7 +192,7 @@        , MonadWriter Foo (Sum a) m        ) => [a] -> m () summatorCore xs = do-    for_ xs $ \x -> do+    forM_ xs $ \x -> do         T.tell (Sum x)         tell foo (Sum 1) @@ -200,10 +200,10 @@ summatorCore' = runWriter foo . T.execWriterT . summatorCore  wrapState_f :: T.MonadState Int m => m String-wrapState_f = fmap show T.get+wrapState_f = liftM show T.get  wrapState_g :: T.MonadState Bool m => m String-wrapState_g = fmap show T.get+wrapState_g = liftM show T.get  wrapState_useboth     :: ( MonadState Foo Int  m