packages feed

collect-errors 0.1.1.0 → 0.1.2.0

raw patch · 6 files changed

+62/−15 lines, 6 filesdep +deepseqPVP ok

version bump matches the API change (PVP)

Dependencies added: deepseq

API changes (from Hackage documentation)

+ Control.CollectErrors: class CanTakeErrors es t
+ Control.CollectErrors: liftTakeErrors :: CanTakeErrors es t2 => (t1 -> t2) -> CollectErrors es t1 -> t2
+ Control.CollectErrors: takeErrors :: CanTakeErrors es t => es -> t -> t
+ Control.CollectErrors: takeErrorsNoValue :: CanTakeErrors es t => es -> t
+ Control.CollectErrors.Type: class CanTakeErrors es t
+ Control.CollectErrors.Type: instance (Control.CollectErrors.Type.CanTakeErrors es t1, Control.CollectErrors.Type.CanTakeErrors es t2) => Control.CollectErrors.Type.CanTakeErrors es (t1, t2)
+ Control.CollectErrors.Type: instance (Control.DeepSeq.NFData v, Control.DeepSeq.NFData es) => Control.DeepSeq.NFData (Control.CollectErrors.Type.CollectErrors es v)
+ Control.CollectErrors.Type: instance Control.DeepSeq.NFData es => Control.DeepSeq.NFData1 (Control.CollectErrors.Type.CollectErrors es)
+ Control.CollectErrors.Type: instance GHC.Base.Monoid es => Control.CollectErrors.Type.CanTakeErrors es (Control.CollectErrors.Type.CollectErrors es t)
+ Control.CollectErrors.Type: instance GHC.Generics.Generic (Control.CollectErrors.Type.CollectErrors es v)
+ Control.CollectErrors.Type: instance GHC.Generics.Generic1 (Control.CollectErrors.Type.CollectErrors es)
+ Control.CollectErrors.Type: liftTakeErrors :: CanTakeErrors es t2 => (t1 -> t2) -> CollectErrors es t1 -> t2
+ Control.CollectErrors.Type: takeErrors :: CanTakeErrors es t => es -> t -> t
+ Control.CollectErrors.Type: takeErrorsNoValue :: CanTakeErrors es t => es -> t
+ Numeric.CollectErrors: class CanTakeErrors es t
+ Numeric.CollectErrors: liftTakeErrors :: CanTakeErrors es t2 => (t1 -> t2) -> CollectErrors es t1 -> t2
+ Numeric.CollectErrors: takeErrors :: CanTakeErrors es t => es -> t -> t
+ Numeric.CollectErrors: takeErrorsNoValue :: CanTakeErrors es t => es -> t
+ Numeric.CollectErrors.Type: instance Control.DeepSeq.NFData Numeric.CollectErrors.Type.ErrorCertaintyLevel
+ Numeric.CollectErrors.Type: instance Control.DeepSeq.NFData Numeric.CollectErrors.Type.NumError
+ Numeric.CollectErrors.Type: instance Control.DeepSeq.NFData Numeric.CollectErrors.Type.NumErrors
+ Numeric.CollectErrors.Type: instance GHC.Generics.Generic Numeric.CollectErrors.Type.ErrorCertaintyLevel
+ Numeric.CollectErrors.Type: instance GHC.Generics.Generic Numeric.CollectErrors.Type.NumError
+ Numeric.CollectErrors.Type: instance GHC.Generics.Generic Numeric.CollectErrors.Type.NumErrors

Files

ChangeLog.md view
@@ -1,5 +1,11 @@ # Changelog for collect-errors +## v0.1.2.0++* Add CanTakeErrors type class and liftTakeErrors function++* Add instance of deepseq's NFData+ ## v0.1.1.0  * Add removeValue functions
collect-errors.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 5f417d9a5348a4f9b717f189c1f3f9770e6a4a4acf3d3840841fbd82f9ac2ef0+-- hash: 9a5c7d7488a22cd99bc416d26c4ed4d2d2e8f07224b622d5cec563fcffc839d2  name:           collect-errors-version:        0.1.1.0+version:        0.1.2.0 synopsis:       Error monad with a Float instance description:    Please see the README on GitHub at <https://github.com/michalkonecny/collect-errors#readme> category:       Math@@ -44,4 +44,5 @@       QuickCheck >=2.7     , base >=4.7 && <5     , containers+    , deepseq   default-language: Haskell2010
src/Control/CollectErrors.hs view
@@ -26,6 +26,8 @@ , lift2pair , lift1Tpair , liftT1pair+, CanTakeErrors(..)+, liftTakeErrors ) where 
src/Control/CollectErrors/Type.hs view
@@ -1,10 +1,17 @@ {-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-} module Control.CollectErrors.Type where  import Prelude  import Control.Applicative ( Applicative(liftA2), liftA ) +import GHC.Generics+import Control.DeepSeq+ import qualified Data.Set as Set  import Test.QuickCheck ( Arbitrary(arbitrary) )@@ -27,6 +34,7 @@   CollectErrors     { getMaybeValue :: Maybe v     , getErrors :: es }+  deriving (Generic, Generic1, NFData, NFData1)  class CanTestErrorsCertain es where   hasCertainError :: es -> Bool@@ -125,6 +133,20 @@   (CollectErrors _ ae) <*> (CollectErrors _ be) =     CollectErrors Nothing (ae <> be) +instance (Monoid es) => Monad (CollectErrors es) where+  ae >>= f =+    case ae of+      CollectErrors (Just a) es1 ->+        let (CollectErrors mv es2) = f a in+          CollectErrors mv (es1 <> es2)+      CollectErrors _ es ->+        CollectErrors Nothing es++instance (Arbitrary t, Monoid es) => Arbitrary (CollectErrors es t) where+  arbitrary = (\v -> CollectErrors (Just v) mempty) <$> arbitrary++-- Various lifts:+ lift :: (Monoid es) => (a -> b) -> (CollectErrors es a) -> (CollectErrors es b) lift = liftA @@ -194,15 +216,21 @@ liftT1pair _ _ (CollectErrors _ be) =    (CollectErrors Nothing be, CollectErrors Nothing be) -instance (Monoid es) => Monad (CollectErrors es) where-  ae >>= f =-    case ae of-      CollectErrors (Just a) es1 ->-        let (CollectErrors mv es2) = f a in-          CollectErrors mv (es1 <> es2)-      CollectErrors _ es ->-        CollectErrors Nothing es+liftTakeErrors :: (CanTakeErrors es t2) => (t1 -> t2) -> (CollectErrors es t1 -> t2)+liftTakeErrors f (CollectErrors (Just v) e) = +  takeErrors e $ f v+liftTakeErrors _f (CollectErrors _ e) = +  takeErrorsNoValue e -instance (Arbitrary t, Monoid es) => Arbitrary (CollectErrors es t) where-  arbitrary = (\v -> CollectErrors (Just v) mempty) <$> arbitrary+class CanTakeErrors es t where+  takeErrors :: es -> t -> t+  takeErrorsNoValue :: es -> t +instance (Monoid es) => CanTakeErrors es (CollectErrors es t) where+  takeErrors es1 (CollectErrors v es2) = CollectErrors v (es1 <> es2)+  takeErrorsNoValue es = CollectErrors Nothing es++instance (CanTakeErrors es t1, CanTakeErrors es t2) => CanTakeErrors es (t1,t2) where+  takeErrors es (v1,v2) = (takeErrors es v1, takeErrors es v2)+  takeErrorsNoValue es = (takeErrorsNoValue es, takeErrorsNoValue es)+  
src/Numeric/CollectErrors.hs view
@@ -27,6 +27,8 @@ , lift2pair , lift1Tpair , liftT1pair+, CanTakeErrors(..)+, liftTakeErrors ) where 
src/Numeric/CollectErrors/Type.hs view
@@ -1,10 +1,14 @@ {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE DeriveGeneric #-} module Numeric.CollectErrors.Type   where +import GHC.Generics+import Control.DeepSeq+ import qualified Data.List as List import qualified Data.Set as Set @@ -19,7 +23,7 @@  type CN = CollectErrors NumErrors newtype NumErrors = NumErrors (Set.Set NumErrorLevel)-  deriving (Eq,Semigroup, Monoid, CanTestErrorsCertain, CanTestErrorsPresent)+  deriving (Eq, Semigroup, Monoid, CanTestErrorsCertain, CanTestErrorsPresent, Generic, NFData) type NumErrorLevel = (NumError, ErrorCertaintyLevel)  instance Show NumErrors where@@ -31,8 +35,10 @@  data NumError =     DivByZero | OutOfDomain String | NumError String-    deriving (Eq, Ord)+    deriving (Eq, Ord, Generic) +instance NFData NumError+ instance Show NumError where   show DivByZero = "division by 0"   show (OutOfDomain s) = "out of domain: " ++ s@@ -40,7 +46,9 @@  data ErrorCertaintyLevel =   ErrorCertain | ErrorPotential-  deriving (Eq, Ord)+  deriving (Eq, Ord, Generic)++instance NFData ErrorCertaintyLevel  instance Show ErrorCertaintyLevel where   show ErrorCertain = "ERROR"