result 0.2.3.0 → 0.2.4.0
raw patch · 3 files changed
+26/−6 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Monad.Trans.Result: hoist :: Applicative f => Result e a -> ResultT e f a
+ Control.Monad.Trans.Result: raiseAllT :: Applicative f => [e] -> ResultT e f ()
+ Data.Result: raiseAll :: [e] -> Result e ()
Files
- result.cabal +1/−1
- src/Control/Monad/Trans/Result.hs +15/−4
- src/Data/Result.hs +10/−1
result.cabal view
@@ -1,5 +1,5 @@ name: result-version: 0.2.3.0+version: 0.2.4.0 synopsis: Encode success or at least one error homepage: https://github.com/srijs/haskell-result license: MIT
src/Control/Monad/Trans/Result.hs view
@@ -1,8 +1,9 @@ {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, UndecidableInstances #-} module Control.Monad.Trans.Result- ( ResultT, runResultT- , raiseT, accumulateT+ ( ResultT, runResultT, hoist+ , raiseT, raiseAllT+ , accumulateT ) where @@ -46,11 +47,21 @@ ResultT (pure <$> m) +hoist :: Applicative f => Result e a -> ResultT e f a+hoist r =+ ResultT (pure r)++ raiseT :: Applicative f => e -> ResultT e f a raiseT e =- ResultT (pure (raise e))+ hoist (raise e) +raiseAllT :: Applicative f => [e] -> ResultT e f ()+raiseAllT es =+ hoist (raiseAll es)++ accumulateT :: (Traversable t , Applicative f) => t (ResultT e f a) -> ResultT e f (t a) accumulateT results = ResultT (accumulate <$> traverse runResultT results)@@ -58,4 +69,4 @@ instance State.MonadState s m => State.MonadState s (ResultT e m) where state f =- ResultT (pure <$> State.state f)+ lift (State.state f)
src/Data/Result.hs view
@@ -3,7 +3,7 @@ module Data.Result ( Result , get, errors- , raise+ , raise, raiseAll , accumulate ) where @@ -69,6 +69,15 @@ raise :: e -> Result e a raise e = Result (Left (e NonEmpty.:| []))+++raiseAll :: [e] -> Result e ()+raiseAll es =+ Result $ case es of+ [] ->+ Right ()+ (e:es') ->+ Left (e NonEmpty.:| es') get :: Result e a -> Maybe a