either 4.4.1 → 4.4.1.1
raw patch · 5 files changed
+15/−6 lines, 5 filesdep ~MonadRandomdep ~mmorphdep ~transformersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: MonadRandom, mmorph, transformers
API changes (from Hackage documentation)
- Control.Monad.Trans.Either: instance (Functor f, MonadFree f m) => MonadFree f (EitherT e m)
- Control.Monad.Trans.Either: instance (Monad f, Traversable f) => Traversable (EitherT e f)
- Control.Monad.Trans.Either: instance (Monad m, Monoid e) => Alternative (EitherT e m)
- Control.Monad.Trans.Either: instance (Monad m, Monoid e) => MonadPlus (EitherT e m)
- Control.Monad.Trans.Either: instance (Monad m, Semigroup e) => Alt (EitherT e m)
- Control.Monad.Trans.Either: instance Eq (m (Either e a)) => Eq (EitherT e m a)
- Control.Monad.Trans.Either: instance Foldable m => Foldable (EitherT e m)
- Control.Monad.Trans.Either: instance MFunctor (EitherT e)
- Control.Monad.Trans.Either: instance Monad m => Applicative (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => Apply (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => Bind (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => Functor (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => Monad (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => MonadError e (EitherT e m)
- Control.Monad.Trans.Either: instance Monad m => Semigroup (EitherT e m a)
- Control.Monad.Trans.Either: instance MonadBase b m => MonadBase b (EitherT e m)
- Control.Monad.Trans.Either: instance MonadBaseControl b m => MonadBaseControl b (EitherT e m)
- Control.Monad.Trans.Either: instance MonadCatch m => MonadCatch (EitherT e m)
- Control.Monad.Trans.Either: instance MonadCont m => MonadCont (EitherT e m)
- Control.Monad.Trans.Either: instance MonadFix m => MonadFix (EitherT e m)
- Control.Monad.Trans.Either: instance MonadIO m => MonadIO (EitherT e m)
- Control.Monad.Trans.Either: instance MonadRandom m => MonadRandom (EitherT e m)
- Control.Monad.Trans.Either: instance MonadReader r m => MonadReader r (EitherT e m)
- Control.Monad.Trans.Either: instance MonadState s m => MonadState s (EitherT e m)
- Control.Monad.Trans.Either: instance MonadThrow m => MonadThrow (EitherT e m)
- Control.Monad.Trans.Either: instance MonadTrans (EitherT e)
- Control.Monad.Trans.Either: instance MonadTransControl (EitherT e)
- Control.Monad.Trans.Either: instance MonadWriter s m => MonadWriter s (EitherT e m)
- Control.Monad.Trans.Either: instance Ord (m (Either e a)) => Ord (EitherT e m a)
- Control.Monad.Trans.Either: instance Read (m (Either e a)) => Read (EitherT e m a)
- Control.Monad.Trans.Either: instance Show (m (Either e a)) => Show (EitherT e m a)
- Control.Monad.Trans.Either: runEitherT :: EitherT e m a -> m (Either e a)
- Data.Either.Validation: instance (Eq e, Eq a) => Eq (Validation e a)
- Data.Either.Validation: instance (Ord e, Ord a) => Ord (Validation e a)
- Data.Either.Validation: instance (Semigroup e, Monoid e) => Alternative (Validation e)
- Data.Either.Validation: instance (Show e, Show a) => Show (Validation e a)
- Data.Either.Validation: instance Alt (Validation e)
- Data.Either.Validation: instance Bifoldable Validation
- Data.Either.Validation: instance Bifunctor Validation
- Data.Either.Validation: instance Bitraversable Validation
- Data.Either.Validation: instance Foldable (Validation e)
- Data.Either.Validation: instance Functor (Validation e)
- Data.Either.Validation: instance Monoid e => Monoid (Validation e a)
- Data.Either.Validation: instance Semigroup e => Applicative (Validation e)
- Data.Either.Validation: instance Semigroup e => Semigroup (Validation e a)
- Data.Either.Validation: instance Traversable (Validation e)
+ Control.Monad.Trans.Either: [runEitherT] :: EitherT e m a -> m (Either e a)
+ Control.Monad.Trans.Either: instance (GHC.Base.Functor f, Control.Monad.Free.Class.MonadFree f m) => Control.Monad.Free.Class.MonadFree f (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance (GHC.Base.Monad f, Data.Traversable.Traversable f) => Data.Traversable.Traversable (Control.Monad.Trans.Either.EitherT e f)
+ Control.Monad.Trans.Either: instance (GHC.Base.Monad m, Data.Semigroup.Semigroup e) => Data.Functor.Alt.Alt (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance (GHC.Base.Monad m, GHC.Base.Monoid e) => GHC.Base.Alternative (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance (GHC.Base.Monad m, GHC.Base.Monoid e) => GHC.Base.MonadPlus (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Cont.Class.MonadCont m => Control.Monad.Cont.Class.MonadCont (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Morph.MFunctor (Control.Monad.Trans.Either.EitherT e)
+ Control.Monad.Trans.Either: instance Control.Monad.Random.Class.MonadRandom m => Control.Monad.Random.Class.MonadRandom (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Either.EitherT e)
+ Control.Monad.Trans.Either: instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Control.Monad.Trans.Control.MonadTransControl (Control.Monad.Trans.Either.EitherT e)
+ Control.Monad.Trans.Either: instance Control.Monad.Writer.Class.MonadWriter s m => Control.Monad.Writer.Class.MonadWriter s (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance Data.Foldable.Foldable m => Data.Foldable.Foldable (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => Control.Monad.Error.Class.MonadError e (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => Data.Functor.Bind.Class.Apply (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => Data.Functor.Bind.Class.Bind (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => Data.Semigroup.Semigroup (Control.Monad.Trans.Either.EitherT e m a)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => GHC.Base.Applicative (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => GHC.Base.Functor (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Trans.Either.EitherT e m)
+ Control.Monad.Trans.Either: instance GHC.Classes.Eq (m (Data.Either.Either e a)) => GHC.Classes.Eq (Control.Monad.Trans.Either.EitherT e m a)
+ Control.Monad.Trans.Either: instance GHC.Classes.Ord (m (Data.Either.Either e a)) => GHC.Classes.Ord (Control.Monad.Trans.Either.EitherT e m a)
+ Control.Monad.Trans.Either: instance GHC.Read.Read (m (Data.Either.Either e a)) => GHC.Read.Read (Control.Monad.Trans.Either.EitherT e m a)
+ Control.Monad.Trans.Either: instance GHC.Show.Show (m (Data.Either.Either e a)) => GHC.Show.Show (Control.Monad.Trans.Either.EitherT e m a)
+ Data.Either.Validation: instance (Data.Semigroup.Semigroup e, GHC.Base.Monoid e) => GHC.Base.Alternative (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance (GHC.Classes.Eq e, GHC.Classes.Eq a) => GHC.Classes.Eq (Data.Either.Validation.Validation e a)
+ Data.Either.Validation: instance (GHC.Classes.Ord e, GHC.Classes.Ord a) => GHC.Classes.Ord (Data.Either.Validation.Validation e a)
+ Data.Either.Validation: instance (GHC.Show.Show e, GHC.Show.Show a) => GHC.Show.Show (Data.Either.Validation.Validation e a)
+ Data.Either.Validation: instance Data.Bifoldable.Bifoldable Data.Either.Validation.Validation
+ Data.Either.Validation: instance Data.Bifunctor.Bifunctor Data.Either.Validation.Validation
+ Data.Either.Validation: instance Data.Bitraversable.Bitraversable Data.Either.Validation.Validation
+ Data.Either.Validation: instance Data.Foldable.Foldable (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance Data.Functor.Alt.Alt (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance Data.Semigroup.Semigroup e => Data.Semigroup.Semigroup (Data.Either.Validation.Validation e a)
+ Data.Either.Validation: instance Data.Semigroup.Semigroup e => GHC.Base.Applicative (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance Data.Traversable.Traversable (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance GHC.Base.Functor (Data.Either.Validation.Validation e)
+ Data.Either.Validation: instance GHC.Base.Monoid e => GHC.Base.Monoid (Data.Either.Validation.Validation e a)
- Control.Monad.Trans.Either: swapEitherT :: Functor m => EitherT e m a -> EitherT a m e
+ Control.Monad.Trans.Either: swapEitherT :: (Functor m) => EitherT e m a -> EitherT a m e
- Data.Either.Combinators: eitherToError :: MonadError e m => Either e a -> m a
+ Data.Either.Combinators: eitherToError :: (MonadError e m) => Either e a -> m a
Files
- CHANGELOG.markdown +9/−0
- README.markdown +1/−1
- either.cabal +2/−2
- src/Data/Either/Combinators.hs +2/−2
- src/Data/Either/Validation.hs +1/−1
CHANGELOG.markdown view
@@ -1,3 +1,12 @@+4.4.1.1+-------+* Fixed building on newer GHCs. (type synonyms require explicit foralls for unused variables these days)++4.4.1+-----+* `transformers` 0.5 support+* Documentation fixes+ 4.4 --- * Support `mmorph`
README.markdown view
@@ -1,7 +1,7 @@ either ====== -[](http://travis-ci.org/ekmett/either)+[](https://hackage.haskell.org/package/either) [](http://travis-ci.org/ekmett/either) This provides an `Either` monad transformer that unlike `ErrorT` is unencumbered by a constraint on its `Left` hand argument. This is needed for a number of applications of this monad transformer, notably in [recursion-schemes](https://github.com/ekmett/recursion-schemes).
either.cabal view
@@ -1,6 +1,6 @@ name: either category: Control, Monads-version: 4.4.1+version: 4.4.1.1 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -38,7 +38,7 @@ profunctors >= 4 && < 6, semigroups >= 0.8.3.1 && < 1, semigroupoids >= 4 && < 6,- transformers >= 0.2 && < 0.5,+ transformers >= 0.2 && < 0.6, transformers-base >= 0.4 && < 0.5 extensions: CPP
src/Data/Either/Combinators.hs view
@@ -237,7 +237,7 @@ -- | Extract the left value or a default. -- -- @--- 'fromLeft' ≡ 'either' 'id'+-- 'fromLeft' b ≡ 'either' 'id' ('const' b) -- @ -- -- >>> fromLeft "hello" (Right 42)@@ -252,7 +252,7 @@ -- | Extract the right value or a default. -- -- @--- 'fromRight' b ≡ 'either' b 'id'+-- 'fromRight' b ≡ 'either' ('const' b) 'id' -- @ -- -- >>> fromRight "hello" (Right "world")
src/Data/Either/Validation.hs view
@@ -117,7 +117,7 @@ Success y -> Right y) {-# INLINE _Success #-} -type Iso s t a b = (Profunctor p, Functor f) => p a (f b) -> p s (f t)+type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t) iso :: (s -> a) -> (b -> t) -> Iso s t a b iso sa bt = dimap sa (fmap bt)