| Copyright | (c) 2020-2021 Kowainik |
|---|---|
| License | MPL-2.0 |
| Maintainer | Kowainik <xrom.xkov@gmail.com> |
| Stability | Stable |
| Portability | Portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Validation.Combinators
Contents
Description
Helpful combinators to work with Validation data type.
Synopsis
- validateAll :: forall e b a f. (Foldable f, Semigroup e) => f (a -> Validation e b) -> a -> Validation e a
- whenSuccess :: Applicative f => x -> Validation e a -> (a -> f x) -> f x
- whenFailure :: Applicative f => x -> Validation e a -> (e -> f x) -> f x
- whenSuccess_ :: Applicative f => Validation e a -> (a -> f ()) -> f ()
- whenFailure_ :: Applicative f => Validation e a -> (e -> f ()) -> f ()
- whenSuccessM :: Monad m => x -> m (Validation e a) -> (a -> m x) -> m x
- whenFailureM :: Monad m => x -> m (Validation e a) -> (e -> m x) -> m x
- whenSuccessM_ :: Monad m => m (Validation e a) -> (a -> m ()) -> m ()
- whenFailureM_ :: Monad m => m (Validation e a) -> (e -> m ()) -> m ()
- failureToMaybe :: Validation e a -> Maybe e
- successToMaybe :: Validation e a -> Maybe a
- maybeToFailure :: a -> Maybe e -> Validation e a
- maybeToSuccess :: e -> Maybe a -> Validation e a
Documentation
validateAll :: forall e b a f. (Foldable f, Semigroup e) => f (a -> Validation e b) -> a -> Validation e a Source #
Validate all given checks in a Foldable. Returns the Success of the
start element when all checks are successful.
A basic example of usage could look like this:
> let validatePassword =validateAll[ validateEmptyPassword , validateShortPassword ] >validateAll"VeryStrongPassword"Success"VeryStrongPassword" >validateAll""Failure(EmptyPassword :| [ShortPassword])
When* functions
whenSuccess :: Applicative f => x -> Validation e a -> (a -> f x) -> f x Source #
Applies the given action to Validation if it is Success and returns the
result. In case of Failure the default value is returned.
>>>whenSuccess "bar" (Failure "foo") (\a -> "success!" <$ print a)"bar"
>>>whenSuccess "bar" (Success 42) (\a -> "success!" <$ print a)42 "success!"
whenFailure :: Applicative f => x -> Validation e a -> (e -> f x) -> f x Source #
Applies the given action to Validation if it is Failure and returns the
result. In case of Success the default value is returned.
>>>whenFailure "bar" (Failure 42) (\a -> "foo" <$ print a)42 "foo"
>>>whenFailure "bar" (Success 42) (\a -> "foo" <$ print a)"bar"
whenSuccess_ :: Applicative f => Validation e a -> (a -> f ()) -> f () Source #
Applies given action to the Validation content if it is Success.
Similar to whenSuccess but the default value is ().
>>>whenSuccess_ (Failure "foo") print>>>whenSuccess_ (Success 42) print42
whenFailure_ :: Applicative f => Validation e a -> (e -> f ()) -> f () Source #
Applies given action to the Validation content if it is Failure.
Similar to whenFailure but the default value is ().
>>>whenFailure_ (Success 42) putStrLn>>>whenFailure_ (Failure "foo") putStrLnfoo
whenSuccessM :: Monad m => x -> m (Validation e a) -> (a -> m x) -> m x Source #
Monadic version of whenSuccess.
Applies monadic action to the given Validation in case of Success.
Returns the resulting value, or provided default.
>>>whenSuccessM "bar" (pure $ Failure "foo") (\a -> "success!" <$ print a)"bar"
>>>whenSuccessM "bar" (pure $ Success 42) (\a -> "success!" <$ print a)42 "success!"
whenFailureM :: Monad m => x -> m (Validation e a) -> (e -> m x) -> m x Source #
Monadic version of whenFailure.
Applies monadic action to the given Validation in case of Failure.
Returns the resulting value, or provided default.
>>>whenFailureM "bar" (pure $ Failure 42) (\a -> "foo" <$ print a)42 "foo"
>>>whenFailureM "bar" (pure $ Success 42) (\a -> "foo" <$ print a)"bar"
whenSuccessM_ :: Monad m => m (Validation e a) -> (a -> m ()) -> m () Source #
Monadic version of whenSuccess_.
Applies monadic action to the given Validation in case of Success.
Similar to whenSuccessM but the default is ().
>>>whenSuccessM_ (pure $ Failure "foo") print>>>whenSuccessM_ (pure $ Success 42) print42
whenFailureM_ :: Monad m => m (Validation e a) -> (e -> m ()) -> m () Source #
Monadic version of whenFailure_.
Applies monadic action to the given Validation in case of Failure.
Similar to whenFailureM but the default is ().
>>>whenFailureM_ (pure $ Success 42) putStrLn>>>whenFailureM_ (pure $ Failure "foo") putStrLnfoo
Maybe conversion
failureToMaybe :: Validation e a -> Maybe e Source #
Maps Failure of Validation to Just.
>>>failureToMaybe (Failure True)Just True>>>failureToMaybe (Success "aba")Nothing
successToMaybe :: Validation e a -> Maybe a Source #
Maps Success of Validation to Just.
>>>successToMaybe (Failure True)Nothing>>>successToMaybe (Success "aba")Just "aba"
maybeToFailure :: a -> Maybe e -> Validation e a Source #
maybeToSuccess :: e -> Maybe a -> Validation e a Source #