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 +6/−0
- ether.cabal +25/−8
- src/Control/Ether/Tagged.hs +0/−1
- src/Control/Ether/Util.hs +21/−1
- src/Control/Ether/Wrapped.hs +1/−2
- src/Control/Monad/Ether/Except/Class.hs +11/−8
- src/Control/Monad/Ether/Implicit/Except/TH.hs +1/−1
- src/Control/Monad/Ether/Reader/Class.hs +13/−9
- src/Control/Monad/Ether/State/Class.hs +13/−9
- src/Control/Monad/Ether/Writer/Class.hs +11/−8
- src/Control/Monad/Trans/Ether/Except.hs +1/−3
- src/Control/Monad/Trans/Ether/Reader.hs +1/−3
- src/Control/Monad/Trans/Ether/State/Lazy.hs +1/−3
- src/Control/Monad/Trans/Ether/State/Strict.hs +1/−3
- src/Control/Monad/Trans/Ether/Writer.hs +6/−3
- test/Regression.hs +5/−5
+ 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