explicit-exception 0.1.9 → 0.1.9.1
raw patch · 3 files changed
+27/−13 lines, 3 filesdep +semigroupsPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: semigroups
API changes (from Hackage documentation)
+ Control.Monad.Exception.Asynchronous.Lazy: instance (GHC.Base.Monad m, GHC.Base.Monoid a) => Data.Semigroup.Semigroup (Control.Monad.Exception.Asynchronous.Lazy.ExceptionalT e m a)
+ Control.Monad.Exception.Asynchronous.Lazy: instance GHC.Base.Monoid a => Data.Semigroup.Semigroup (Control.Monad.Exception.Asynchronous.Lazy.Exceptional e a)
+ Control.Monad.Exception.Asynchronous.Strict: instance (GHC.Base.Monad m, GHC.Base.Monoid a) => Data.Semigroup.Semigroup (Control.Monad.Exception.Asynchronous.Strict.ExceptionalT e m a)
+ Control.Monad.Exception.Asynchronous.Strict: instance GHC.Base.Monoid a => Data.Semigroup.Semigroup (Control.Monad.Exception.Asynchronous.Strict.Exceptional e a)
Files
- explicit-exception.cabal +3/−3
- src/Control/Monad/Exception/Asynchronous/Lazy.hs +12/−5
- src/Control/Monad/Exception/Asynchronous/Strict.hs +12/−5
explicit-exception.cabal view
@@ -1,5 +1,5 @@ Name: explicit-exception-Version: 0.1.9+Version: 0.1.9.1 License: BSD3 License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de>@@ -42,7 +42,7 @@ Source-Repository this type: darcs location: http://code.haskell.org/explicit-exception/- tag: 0.1.9+ tag: 0.1.9.1 Flag buildTests description: Build executables that demonstrate some space leaks@@ -55,6 +55,7 @@ Library Build-Depends: transformers >=0.2 && <0.6,+ semigroups >=0.1 && <1.0, deepseq >=1.1 && <1.5 If impl(jhc) Build-Depends:@@ -117,7 +118,6 @@ Executable ee-writer If !flag(buildTests)- Buildable: False Buildable: False GHC-Options: -Wall Hs-Source-Dirs: spaceleak
src/Control/Monad/Exception/Asynchronous/Lazy.hs view
@@ -54,6 +54,7 @@ import Data.Foldable (Foldable, ) -} import Data.Monoid(Monoid, mappend, mempty, )+import Data.Semigroup (Semigroup((<>)), ) import Data.Function (const, (.), ($), ) import Data.Maybe (Maybe(Just, Nothing), maybe, ) @@ -207,6 +208,10 @@ instance (NFData e, NFData a) => NFData (Exceptional e a) where rnf (Exceptional e a) = rnf (e, a) +instance Monoid a => Semigroup (Exceptional e a) where+ Exceptional ea a <> Exceptional eb b =+ Exceptional (mplus ea eb) (mappend a (maybe b (const mempty) ea))+ {- | 'mappend' must be strict in order to fulfill the Monoid laws @mappend mempty a = a@ and @mappend a mempty = a@ for @a=undefined@.@@ -214,8 +219,7 @@ instance Monoid a => Monoid (Exceptional e a) where mempty = pure mempty -- mappend = append- mappend (Exceptional ea a) (Exceptional eb b) =- Exceptional (mplus ea eb) (mappend a (maybe b (const mempty) ea))+ mappend = (<>) {- | construct Exceptional constructor lazily -}@@ -392,11 +396,14 @@ fmap f (ExceptionalT x) = ExceptionalT (fmap (fmap f) x) -instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where- mempty = ExceptionalT $ return mempty- mappend x y =+instance (Monad m, Monoid a) => Semigroup (ExceptionalT e m a) where+ x <> y = ExceptionalT $ appendM (runExceptionalT x) (runExceptionalT y)++instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where+ mempty = ExceptionalT $ return mempty+ mappend = (<>) {- instance Applicative m => Applicative (ExceptionalT e m) where
src/Control/Monad/Exception/Asynchronous/Strict.hs view
@@ -54,6 +54,7 @@ import Data.Foldable (Foldable, ) -} import Data.Monoid(Monoid, mappend, mempty, )+import Data.Semigroup (Semigroup((<>)), ) import Data.Function (const, (.), ($), ) import Data.Maybe (Maybe(Just, Nothing), maybe, ) @@ -201,6 +202,10 @@ instance (NFData e, NFData a) => NFData (Exceptional e a) where rnf (Exceptional e a) = rnf (e, a) +instance Monoid a => Semigroup (Exceptional e a) where+ Exceptional ea a <> Exceptional eb b =+ Exceptional (mplus ea eb) (mappend a (maybe b (const mempty) ea))+ {- | 'mappend' must be strict in order to fulfill the Monoid laws @mappend mempty a = a@ and @mappend a mempty = a@ for @a=undefined@.@@ -208,8 +213,7 @@ instance Monoid a => Monoid (Exceptional e a) where mempty = pure mempty -- mappend = append- mappend (Exceptional ea a) (Exceptional eb b) =- Exceptional (mplus ea eb) (mappend a (maybe b (const mempty) ea))+ mappend = (<>) {- | construct Exceptional constructor lazily -}@@ -372,11 +376,14 @@ fmap f (ExceptionalT x) = ExceptionalT (fmap (fmap f) x) -instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where- mempty = ExceptionalT $ return mempty- mappend x y =+instance (Monad m, Monoid a) => Semigroup (ExceptionalT e m a) where+ x <> y = ExceptionalT $ appendM (runExceptionalT x) (runExceptionalT y)++instance (Monad m, Monoid a) => Monoid (ExceptionalT e m a) where+ mempty = ExceptionalT $ return mempty+ mappend = (<>) {- instance Applicative m => Applicative (ExceptionalT e m) where