mixed-types-num 0.4.0.1 → 0.4.0.2
raw patch · 2 files changed
+42/−14 lines, 2 filesdep ~smallcheckPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependency ranges changed: smallcheck
API changes (from Hackage documentation)
+ Control.CollectErrors: lift3CE :: (SuitableForCE es, CanEnsureCE es a, CanEnsureCE es b, CanEnsureCE es c, CanEnsureCE es d) => (a -> b -> c -> d) -> CollectErrors es a -> CollectErrors es b -> CollectErrors es c -> EnsureCE es d
Files
- mixed-types-num.cabal +17/−13
- src/Control/CollectErrors.hs +25/−1
mixed-types-num.cabal view
@@ -1,6 +1,6 @@ name: mixed-types-num-version: 0.4.0.1-cabal-version: >= 1.9.2+version: 0.4.0.2+cabal-version: >= 1.10 build-type: Simple homepage: https://github.com/michalkonecny/mixed-types-num author: Michal Konecny@@ -40,17 +40,9 @@ library hs-source-dirs: src- build-depends:- base >= 4.8 && < 5- -- , convertible >= 1.1.1.0- , template-haskell- , mtl- , hspec >= 2.1- , hspec-smallcheck >= 0.3- , smallcheck == 1.1.*- , QuickCheck >= 2.7 ghc-options: -Wall -fno-warn-orphans- extensions:+ default-language: Haskell2010+ default-extensions: RebindableSyntax, PostfixOperators, ScopedTypeVariables,@@ -62,6 +54,17 @@ FlexibleContexts, FlexibleInstances, UndecidableInstances+ other-extensions:+ TemplateHaskell+ build-depends:+ base >= 4.8 && < 5+ -- , convertible >= 1.1.1.0+ , template-haskell+ , mtl+ , hspec >= 2.1+ , hspec-smallcheck >= 0.3+ , smallcheck >= 1.1+ , QuickCheck >= 2.7 exposed-modules: Utils.TH.DeclForTypes Utils.Test.EnforceRange@@ -90,7 +93,8 @@ exitcode-stdio-1.0 ghc-options: -Wall- extensions:+ default-language: Haskell2010+ default-extensions: RebindableSyntax, PostfixOperators, ScopedTypeVariables,
src/Control/CollectErrors.hs view
@@ -10,7 +10,7 @@ -- * Tools for avoiding @CollectErrors(CollectErrors t)@ and putting CE inside containers , CanEnsureCE(..) , getValueOrThrowErrorsNCE-, lift1CE, lift2CE, lift2TCE, lift2TLCE+, lift1CE, lift2CE, lift2TCE, lift2TLCE, lift3CE -- ** Tools for pulling errors out of structures , CanExtractCE(..) )@@ -396,6 +396,30 @@ (a -> b -> c) -> a -> (CollectErrors es b) -> (EnsureCE es c) lift2TLCE f = flip $ lift2TCE (flip f)++{-|+ Add error collection support to a binary function whose+ result may already have collected errors.+-}+lift3CE ::+ (SuitableForCE es+ , CanEnsureCE es a, CanEnsureCE es b, CanEnsureCE es c, CanEnsureCE es d)+ =>+ (a -> b -> c -> d) ->+ (CollectErrors es a) -> (CollectErrors es b) -> (CollectErrors es c) -> (EnsureCE es d)+lift3CE fn aCE bCE cCE =+ case (ma, mb, mc) of+ (Just a, Just b, Just c) ->+ prependErrorsECE sample_d abc_es $ ensureCE sample_es $ fn a b c+ _ ->+ noValueECE sample_d abc_es+ where+ CollectErrors ma a_es = aCE+ CollectErrors mb b_es = bCE+ CollectErrors mc c_es = cCE+ abc_es = a_es <> b_es <> c_es+ sample_es = Just a_es+ sample_d = fn <$> ma <*> mb <*> mc {-|