packages feed

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 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   {-|