multi-except 0.1.0.0 → 0.1.1.0
raw patch · 3 files changed
+17/−5 lines, 3 filesdep +semigroupoidsPVP ok
version bump matches the API change (PVP)
Dependencies added: semigroupoids
API changes (from Hackage documentation)
+ Control.Applicative.MultiExcept: instance Data.Functor.Alt.Alt (Control.Applicative.MultiExcept.MultiExcept err)
Files
- CHANGELOG.md +4/−0
- Control/Applicative/MultiExcept.hs +9/−3
- multi-except.cabal +4/−2
CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for multi-except +## 0.1.1.0 -- 2021-05-11++* Added Alt instance from semigroupoids+ ## 0.1.0.0 -- 2021-05-11 * First version. Released on an unsuspecting world.
Control/Applicative/MultiExcept.hs view
@@ -14,9 +14,10 @@ , succeed ) where -import Data.List.NonEmpty (NonEmpty)+import Data.Functor.Alt import Data.DList.DNonEmpty (DNonEmpty) import qualified Data.DList.DNonEmpty as DNE+import Data.List.NonEmpty (NonEmpty) -- | A MultiExcept is a success value, or one or more errors data MultiExcept err a@@ -31,7 +32,7 @@ -- | Throw a single error throwError :: err -> MultiExcept err a-throwError = Errors . DNE.singleton+throwError = Errors . pure -- | Embeds a value into a MultiExcept context succeed :: a -> MultiExcept err a@@ -44,7 +45,12 @@ instance Applicative (MultiExcept err) where pure = succeed - Errors l <*> Errors l' = Errors $ DNE.append l l'+ Errors l <*> Errors l' = Errors $ l <> l' Success f <*> Success a = Success $ f a Errors l <*> _ = Errors l _ <*> Errors l = Errors l++instance Alt (MultiExcept err) where+ Success a <!> _ = Success a+ _ <!> Success a = Success a+ Errors l <!> Errors r = Errors (l <> r)
multi-except.cabal view
@@ -1,7 +1,7 @@ cabal-version: >=1.10 name: multi-except-version: 0.1.0.0+version: 0.1.1.0 synopsis: Multiple Exceptions description: Exception type that supports reporting multiple exceptions license: MIT@@ -11,9 +11,11 @@ category: Exceptions build-type: Simple extra-source-files: CHANGELOG.md+homepage: https://github.com/414owen/multi-except library- exposed-modules: Control.Applicative.MultiExcept+ exposed-modules: Control.Applicative.MultiExcept build-depends: base >=4.0 && <5 , dlist+ , semigroupoids default-language: Haskell2010