Safe Haskell | None |
---|---|
Language | Haskell2010 |
Numeric.CollectErrors
Synopsis
- data NumError
- data ErrorCertaintyLevel
- data NumErrors
- type CN = CollectErrors NumErrors
- cn :: v -> CN v
- unCN :: CN p -> p
- (~!) :: Show es => CollectErrors es p -> p
- noValueNumErrorCertain :: NumError -> CN v
- noValueNumErrorPotential :: NumError -> CN v
- removeValueErrorCertain :: CN t -> NumError -> CN t
- removeValueErrorPotential :: CN t -> NumError -> CN t
- prependErrorCertain :: NumError -> CN t -> CN t
- prependErrorPotential :: NumError -> CN t -> CN t
- class CanClearPotentialErrors cnt where
- clearPotentialErrors :: cnt -> cnt
- type CanTakeCNErrors = CanTakeErrors NumErrors
- noValue :: es -> CollectErrors es v
- removeValue :: Monoid es => CollectErrors es v -> es -> CollectErrors es v
- prependErrors :: Monoid es => es -> CollectErrors es v -> CollectErrors es v
- class CanTestErrorsCertain es where
- hasCertainError :: es -> Bool
- class CanTestErrorsPresent es where
- toEither :: CanBeErrors es => CollectErrors es v -> Either es v
- withErrorOrValue :: CanBeErrors es => (es -> t) -> (v -> t) -> CollectErrors es v -> t
- filterValuesWithoutError :: CanBeErrors es => [CollectErrors es v] -> [v]
- lift :: Monoid es => (a -> b) -> CollectErrors es a -> CollectErrors es b
- liftCN :: (a -> CN c) -> CN a -> CN c
- liftPair :: Monoid es => (a -> (c, d)) -> CollectErrors es a -> (CollectErrors es c, CollectErrors es d)
- lift2 :: Monoid es => (a -> b -> c) -> CollectErrors es a -> CollectErrors es b -> CollectErrors es c
- lift2CN :: (a -> b -> CN c) -> CN a -> CN b -> CN c
- lift1T :: Monoid es => (a -> b -> c) -> CollectErrors es a -> b -> CollectErrors es c
- liftT1 :: Monoid es => (a -> b -> c) -> a -> CollectErrors es b -> CollectErrors es c
- lift1TCN :: (a -> b -> CN c) -> CN a -> b -> CN c
- liftT1CN :: (a -> b -> CN c) -> a -> CN b -> CN c
- lift2pair :: Monoid es => (a -> b -> (c, d)) -> CollectErrors es a -> CollectErrors es b -> (CollectErrors es c, CollectErrors es d)
- lift1Tpair :: Monoid es => (a -> b -> (c, d)) -> CollectErrors es a -> b -> (CollectErrors es c, CollectErrors es d)
- liftT1pair :: Monoid es => (a -> b -> (c, d)) -> a -> CollectErrors es b -> (CollectErrors es c, CollectErrors es d)
- class CanTakeErrors es t where
- takeErrors :: es -> t -> t
- takeErrorsNoValue :: es -> t
- liftTakeErrors :: CanTakeErrors es t2 => (t1 -> t2) -> CollectErrors es t1 -> t2
Type of numeric errors
Constructors
DivByZero | |
OutOfDomain String | |
NumError String |
Instances
Eq NumError Source # | |
Ord NumError Source # | |
Defined in Numeric.CollectErrors.Type | |
Show NumError Source # | |
Generic NumError Source # | |
NFData NumError Source # | |
Defined in Numeric.CollectErrors.Type | |
CanTestErrorsCertain NumErrorLevel Source # | |
Defined in Numeric.CollectErrors.Type Methods hasCertainError :: NumErrorLevel -> Bool Source # | |
type Rep NumError Source # | |
Defined in Numeric.CollectErrors.Type type Rep NumError = D1 ('MetaData "NumError" "Numeric.CollectErrors.Type" "collect-errors-0.1.5.0-DAyNZ8BMV4w4yqJNdU6hiq" 'False) (C1 ('MetaCons "DivByZero" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "OutOfDomain" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "NumError" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)))) |
data ErrorCertaintyLevel Source #
Constructors
ErrorCertain | |
ErrorPotential |
Instances
Instances
type CN = CollectErrors NumErrors Source #
(~!) :: Show es => CollectErrors es p -> p Source #
Unsafe way to get a value out of the CollectErrors wrapper.
Utilities
noValueNumErrorCertain :: NumError -> CN v Source #
Construct an empty wrapper indicating that given error has certainly occurred.
noValueNumErrorPotential :: NumError -> CN v Source #
Construct an empty wrapper indicating that given error may have occurred.
class CanClearPotentialErrors cnt where Source #
Methods
clearPotentialErrors :: cnt -> cnt Source #
If there is a value, remove any potential errors that are associated with it.
Instances
CanClearPotentialErrors t => CanClearPotentialErrors [t] Source # | |
Defined in Numeric.CollectErrors.Type Methods clearPotentialErrors :: [t] -> [t] Source # | |
CanClearPotentialErrors (CN t) Source # | |
Defined in Numeric.CollectErrors.Type Methods clearPotentialErrors :: CN t -> CN t Source # | |
(CanClearPotentialErrors t1, CanClearPotentialErrors t2) => CanClearPotentialErrors (t1, t2) Source # | |
Defined in Numeric.CollectErrors.Type Methods clearPotentialErrors :: (t1, t2) -> (t1, t2) Source # |
type CanTakeCNErrors = CanTakeErrors NumErrors Source #
Applicable general collect-error utilities
noValue :: es -> CollectErrors es v Source #
removeValue :: Monoid es => CollectErrors es v -> es -> CollectErrors es v Source #
Take a CE-value, add new errors into it and remove the value, if any
prependErrors :: Monoid es => es -> CollectErrors es v -> CollectErrors es v Source #
class CanTestErrorsCertain es where Source #
Methods
hasCertainError :: es -> Bool Source #
Instances
CanTestErrorsCertain NumErrorLevel Source # | |
Defined in Numeric.CollectErrors.Type Methods hasCertainError :: NumErrorLevel -> Bool Source # | |
CanTestErrorsCertain NumErrors Source # | |
Defined in Numeric.CollectErrors.Type Methods hasCertainError :: NumErrors -> Bool Source # | |
CanTestErrorsCertain es => CanTestErrorsCertain [es] Source # | |
Defined in Control.CollectErrors.Type Methods hasCertainError :: [es] -> Bool Source # | |
CanTestErrorsCertain es => CanTestErrorsCertain (Set es) Source # | |
Defined in Control.CollectErrors.Type Methods hasCertainError :: Set es -> Bool Source # | |
CanTestErrorsCertain es => CanTestErrorsCertain (CollectErrors es v) Source # | |
Defined in Control.CollectErrors.Type Methods hasCertainError :: CollectErrors es v -> Bool Source # |
class CanTestErrorsPresent es where Source #
Instances
CanTestErrorsPresent NumErrors Source # | |
CanTestErrorsPresent [es] Source # | |
Defined in Control.CollectErrors.Type | |
CanTestErrorsPresent (Set es) Source # | |
CanTestErrorsPresent es => CanTestErrorsPresent (CollectErrors es v) Source # | |
Defined in Control.CollectErrors.Type Methods hasError :: CollectErrors es v -> Bool Source # |
toEither :: CanBeErrors es => CollectErrors es v -> Either es v Source #
A safe way to get a value out of the CollectErrors wrapper.
withErrorOrValue :: CanBeErrors es => (es -> t) -> (v -> t) -> CollectErrors es v -> t Source #
filterValuesWithoutError :: CanBeErrors es => [CollectErrors es v] -> [v] Source #
lift :: Monoid es => (a -> b) -> CollectErrors es a -> CollectErrors es b Source #
liftPair :: Monoid es => (a -> (c, d)) -> CollectErrors es a -> (CollectErrors es c, CollectErrors es d) Source #
lift2 :: Monoid es => (a -> b -> c) -> CollectErrors es a -> CollectErrors es b -> CollectErrors es c Source #
lift1T :: Monoid es => (a -> b -> c) -> CollectErrors es a -> b -> CollectErrors es c Source #
liftT1 :: Monoid es => (a -> b -> c) -> a -> CollectErrors es b -> CollectErrors es c Source #
lift2pair :: Monoid es => (a -> b -> (c, d)) -> CollectErrors es a -> CollectErrors es b -> (CollectErrors es c, CollectErrors es d) Source #
lift1Tpair :: Monoid es => (a -> b -> (c, d)) -> CollectErrors es a -> b -> (CollectErrors es c, CollectErrors es d) Source #
liftT1pair :: Monoid es => (a -> b -> (c, d)) -> a -> CollectErrors es b -> (CollectErrors es c, CollectErrors es d) Source #
class CanTakeErrors es t where Source #
Instances
(CanTakeErrors es t1, CanTakeErrors es t2) => CanTakeErrors es (t1, t2) Source # | |
Defined in Control.CollectErrors.Type Methods takeErrors :: es -> (t1, t2) -> (t1, t2) Source # takeErrorsNoValue :: es -> (t1, t2) Source # | |
Monoid es => CanTakeErrors es (CollectErrors es t) Source # | |
Defined in Control.CollectErrors.Type Methods takeErrors :: es -> CollectErrors es t -> CollectErrors es t Source # takeErrorsNoValue :: es -> CollectErrors es t Source # |
liftTakeErrors :: CanTakeErrors es t2 => (t1 -> t2) -> CollectErrors es t1 -> t2 Source #