HORIZON HASKELLDocslts/ghc-9.14.x45dd5372026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 45dd537 · 2026-10-11

Modulevalidation-1.3.3Haskell2010

Data.Validation.Validation

A data type similar to Data.Either that accumulates failures.

  • 1 type
  • 4 classes
  • 5 values
  • Packagevalidation-1.3.3
  • Exports10
  • LanguageHaskell2010
  • LicenceBSD-3-Clause
  • SourceValidation.hs

Data type

1 declaration
datadata Validation err a
#

A Validation is either a value of the type err or a, similar to Either. However, the Applicative instance for Validation accumulates errors using a Semigroup on err. In contrast, the Applicative for Either returns only the first error.

A consequence of this is that Validation has no Bind or Monad instance. This is because such an instance would violate the law that a Monad's ap must equal the Applicative's <*>

See the README for usage examples.

Constructors

Instances45Bifoldable, Bifoldable1, Bifunctor, Bitraversable, Eq2, Ord2, …
  • Bifoldable ValidationDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Data.Bifoldable(Bifoldable(bifoldr))bifoldr (\e r -> show e ++ r) (\a r -> show a ++ r) "" (Failure 1 :: Validation Int Int)"1"
    Example1 expression
    bifoldr (\e r -> show e ++ r) (\a r -> show a ++ r) "" (Success 2 :: Validation Int Int)"2"
  • Bifoldable1 ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Bifunctor ValidationDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Data.Bifunctor(Bifunctor(bimap))bimap show (+1) (Failure 1 :: Validation Int Int)Failure "1"
    Example1 expression
    bimap show (+1) (Success 1 :: Validation Int Int)Success 2
  • Bitraversable ValidationDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Data.Bitraversable(Bitraversable(bitraverse))bitraverse (\e -> [e, e+1]) (\a -> [a, a*2]) (Failure 1 :: Validation Int Int)[Failure 1,Failure 2]
    Example1 expression
    bitraverse (\e -> [e, e+1]) (\a -> [a, a*2]) (Success 3 :: Validation Int Int)[Success 3,Success 6]
  • Eq2 ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Ord2 ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Show2 ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Assoc ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Swap ValidationDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Data.Bifunctor.Swap(Swap(swap))swap (Failure "err" :: Validation String Int)Success "err"
    Example1 expression
    swap (Success 1 :: Validation String Int)Failure 1
  • Bitraversable1 ValidationDefined in validation-1.3.3 · Data.Validation.Validation
  • Generic1 (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Functor (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
    Example1 expression
    fmap (+1) (Success 2 :: Validation String Int)Success 3
    Example1 expression
    fmap (+1) (Failure "err" :: Validation String Int)Failure "err"
  • Semigroup err => Applicative (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation

    Delegates to the Apply instance, accumulating errors with <>.

    Example1 expression
    pure (+1) <*> pure 2 :: Validation [String] IntSuccess 3
    Example1 expression
    Failure ["e1"] <*> Failure ["e2"] :: Validation [String] IntFailure ["e1","e2"]
  • Foldable (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
    Example1 expression
    foldr (:) [] (Success 1 :: Validation String Int)[1]
    Example1 expression
    foldr (:) [] (Failure "err" :: Validation String Int)[]
  • Traversable (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
    Example1 expression
    traverse (\x -> [x, x+1]) (Success 1 :: Validation String Int)[Success 1,Success 2]
    Example1 expression
    traverse (\x -> [x, x+1]) (Failure "err" :: Validation String Int)[Failure "err"]
  • Monoid err => Alternative (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Eq err => Eq1 (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Ord err => Ord1 (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Show err => Show1 (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Semigroup err => Alt (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation

    Tries the left, then the right, accumulating errors on two failures.

    Example2 expressions
    import Data.Functor.Alt(Alt((<!>)))Success 1 <!> Success 2 :: Validation [String] IntSuccess 1
    Example1 expression
    Failure ["e1"] <!> Success 2 :: Validation [String] IntSuccess 2
    Example1 expression
    Success 1 <!> Failure ["e2"] :: Validation [String] IntSuccess 1
    Example1 expression
    Failure ["e1"] <!> Failure ["e2"] :: Validation [String] IntFailure ["e1","e2"]
  • Semigroup err => Apply (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation

    Accumulates errors on the left using Semigroup.

    Example2 expressions
    import Data.Functor.Apply(Apply((<.>)))Success (+1) <.> Success 2 :: Validation [String] IntSuccess 3
    Example1 expression
    Failure ["e1"] <.> Success 2 :: Validation [String] IntFailure ["e1"]
    Example1 expression
    Success (+1) <.> Failure ["e2"] :: Validation [String] IntFailure ["e2"]
    Example1 expression
    Failure ["e1"] <.> Failure ["e2"] :: Validation [String] IntFailure ["e1","e2"]
  • Extend (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Monoid err => Plus (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation
  • Semigroup err => Selective (Validation err)Defined in validation-1.3.3 · Data.Validation.Validation

    Skips the second effect on Failure.

    Example2 expressions
    import Control.Selective(Selective(select))select (Success (Right 1)) (Success (+1)) :: Validation [String] IntSuccess 1
    Example1 expression
    select (Success (Left 1)) (Success (+1)) :: Validation [String] IntSuccess 2
    Example1 expression
    select (Failure ["e1"]) (Success (+1)) :: Validation [String] IntFailure ["e1"]
    Example1 expression
    select (Failure ["e1"]) (Failure ["e2"]) :: Validation [String] IntFailure ["e1"]
  • Sieve (ValidatorProfunctor err) (Validation err)Defined in validation-1.3.3 · Data.Validation.Validator
    Example1 expression
    sieve vpFromInput 3Success 4
    Example1 expression
    sieve (vpErr ["e"]) 0Failure ["e"]
  • (Eq err, Eq a) => Eq (Validation err a)Defined in validation-1.3.3 · Data.Validation.Validation
  • (Data err, Data a) => Data (Validation err a)Defined in validation-1.3.3 · Data.Validation.Validation
  • (Ord err, Ord a) => Ord (Validation err a)Defined in validation-1.3.3 · Data.Validation.Validation
  • (Show err, Show a) => Show (Validation err a)Defined in validation-1.3.3 · Data.Validation.Validation
  • Generic (Validation err a)Defined in validation-1.3.3 · Data.Validation.Validation
  • Semigroup e => Semigroup (Validation e a)Defined in validation-1.3.3 · Data.Validation.Validation

    First Success wins; two Failures are combined with <>.

    Example1 expression
    Failure ["e1"] <> Failure ["e2"] :: Validation [String] IntFailure ["e1","e2"]
    Example1 expression
    Failure ["e1"] <> Success 2 :: Validation [String] IntSuccess 2
    Example1 expression
    Success 1 <> Failure ["e2"] :: Validation [String] IntSuccess 1
    Example1 expression
    Success 1 <> Success 2 :: Validation [String] IntSuccess 1
  • Monoid e => Monoid (Validation e a)Defined in validation-1.3.3 · Data.Validation.Validation
    Example1 expression
    mempty :: Validation [String] IntFailure []
  • (NFData e, NFData a) => NFData (Validation e a)Defined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Control.DeepSeq(rnf)rnf (Success 1 :: Validation String Int)()
    Example1 expression
    rnf (Failure "err" :: Validation String Int)()
  • AsValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • GetValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • HasValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • ReviewValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • AsValidationMonadT (Validation err a) err Identity aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens((^?))(Success 1 :: Validation String Int) ^? _ValidationMonadTJust (ValidationMonadT (Identity (Success 1)))
  • GetValidationMonadT (Validation err a) err Identity aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(view)view getValidationMonadT (Success 1 :: Validation String Int)ValidationMonadT (Identity (Success 1))
  • HasValidationMonadT (Validation err a) err Identity aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(view)view validationMonadT (Success 1 :: Validation String Int)ValidationMonadT (Identity (Success 1))
  • ReviewValidationMonadT (Validation err a) err Identity aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(review)review reviewValidationMonadT (ValidationMonadT (Identity (Success 1))) :: Validation String IntSuccess 1
  • Injection1 (Validation a b) (Validation a' b) a a'Defined in validation-1.3.3 · Data.Validation.Validation

    The first constructor, Failure. The same as __Failure.

    Example2 expressions
    import Control.Lens((^?), (#), over)(Failure "err" :: Validation String Int) ^? _I1Just "err"
    Example1 expression
    (Success 1 :: Validation String Int) ^? _I1Nothing
    Example1 expression
    _I1 # "err" :: Validation String IntFailure "err"
    Example1 expression
    over _I1 length (Failure "err" :: Validation String Int)Failure 3
  • Injection2 (Validation a b) (Validation a b') b b'Defined in validation-1.3.3 · Data.Validation.Validation

    The second constructor, Success. The same as __Success.

    Example2 expressions
    import Control.Lens((^?), (#), over)(Success 1 :: Validation String Int) ^? _I2Just 1
    Example1 expression
    (Failure "err" :: Validation String Int) ^? _I2Nothing
    Example1 expression
    _I2 # 1 :: Validation String IntSuccess 1
    Example1 expression
    over _I2 show (Success 1 :: Validation String Int)Success "1"
  • type Rep (Validation err a) = D1 ('MetaData "Validation" "Data.Validation.Validation" "validation-1.3.3-1rmGLJZm63vLrWVTj4XPXA" 'False) (C1 ('MetaCons "Failure" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 err)) :+: C1 ('MetaCons "Success" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))Defined in validation-1.3.3 · Data.Validation.Validation
  • type Rep1 (Validation err) = D1 ('MetaData "Validation" "Data.Validation.Validation" "validation-1.3.3-1rmGLJZm63vLrWVTj4XPXA" 'False) (C1 ('MetaCons "Failure" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 err)) :+: C1 ('MetaCons "Success" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))Defined in validation-1.3.3 · Data.Validation.Validation

Catamorphism

1 declaration
valuefoldValidation :: (a -> x) -> (b -> x) -> Validation a b -> x
#

Catamorphism for Validation.

Example1 expression
foldValidation show show (Failure 1 :: Validation Int Int)"1"
Example1 expression
foldValidation show show (Success 2 :: Validation Int Int)"2"

Optics

0 declarations

Classy lenses

classclass GetValidation s err a | s -> err a where
#

Class for types that have a Getter to a Validation.

Methods

Instances3GetValidation
  • GetValidation (Either err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Control.Lens(view)view getValidation (Left "err" :: Either String Int)Failure "err"
    Example1 expression
    view getValidation (Right 1 :: Either String Int)Success 1
  • GetValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • GetValidation (ValidationMonad err a) err aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(view)view getValidation (ValidationMonadT (Identity (Success 1)) :: ValidationMonadT String Identity Int)Success 1
classclass GetValidation s err a => HasValidation s err a | s -> err a where
#

Class for types that have a Lens' to a Validation (as generated by makeClassy).

Methods

Instances3HasValidation
  • HasValidation (Either err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Control.Lens(view, set)view validation (Left "err" :: Either String Int)Failure "err"
    Example1 expression
    set validation (Success 2 :: Validation String Int) (Left "err" :: Either String Int)Right 2
  • HasValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • HasValidation (ValidationMonad err a) err aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(view)view validation (ValidationMonadT (Identity (Success 1)) :: ValidationMonadT String Identity Int)Success 1

Classy prisms

classclass ReviewValidation s err a | s -> err a where
#

Class for types that have a Review to a Validation.

Instances3ReviewValidation
  • ReviewValidation (Either err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Control.Lens((#))reviewValidation # (Failure "err" :: Validation String Int) :: Either String IntLeft "err"
    Example1 expression
    reviewValidation # (Success 1 :: Validation String Int) :: Either String IntRight 1
  • ReviewValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • Applicative m => ReviewValidation (ValidationMonadT err m a) err aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens(review)review reviewValidation (Success 1 :: Validation String Int) :: ValidationMonadT String [] IntValidationMonadT [Success 1]
classclass ReviewValidation s err a => AsValidation s err a | s -> err a where
#

Class for types that have a Prism' to a Validation (as generated by makeClassyPrisms).

Methods

Instances3AsValidation
  • AsValidation (Either err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
    Example2 expressions
    import Control.Lens((^?), (#))_Validation # (Failure "err" :: Validation String Int) :: Either String IntLeft "err"
    Example1 expression
    (Left "err" :: Either String Int) ^? _ValidationJust (Failure "err")
    Example1 expression
    (Right 1 :: Either String Int) ^? _ValidationJust (Success 1)
  • AsValidation (Validation err a) err aDefined in validation-1.3.3 · Data.Validation.Validation
  • AsValidation (ValidationMonad err a) err aDefined in validation-1.3.3 · Data.Validation.ValidationMonad
    Example2 expressions
    import Control.Lens((^?))(ValidationMonadT (Identity (Success 1)) :: ValidationMonadT String Identity Int) ^? _ValidationJust (Success 1)

Prisms

value__Failure
  1. :: (Choice p, Applicative f)
  2. => p a (f a')
  3. -> p (Validation a b) (f (Validation a' b))
#

Polymorphic Prism targeting the Failure constructor.

Example2 expressions
import Control.Lens((^?), review)review __Failure "err" :: Validation String IntFailure "err"
Example1 expression
(Failure "err" :: Validation String Int) ^? __FailureJust "err"
Example1 expression
(Success 1 :: Validation String Int) ^? __FailureNothing
value__Success
  1. :: (Choice p, Applicative f)
  2. => p b (f b')
  3. -> p (Validation a b) (f (Validation a b'))
#

Polymorphic Prism targeting the Success constructor.

Example2 expressions
import Control.Lens((^?), review)review __Success 1 :: Validation String IntSuccess 1
Example1 expression
(Success 1 :: Validation String Int) ^? __SuccessJust 1
Example1 expression
(Failure "err" :: Validation String Int) ^? __SuccessNothing

Isomorphisms

valueeither
  1. :: (Profunctor p, Functor f)
  2. => p (Either a b) (f (Either a' b'))
  3. -> p (Validation a b) (f (Validation a' b'))
#

Isomorphism between Validation and Either.

Example2 expressions
import Control.Lens(view)view either (Failure "err" :: Validation String Int)Left "err"
Example1 expression
view either (Success 1 :: Validation String Int)Right 1
valuecodiagonal
  1. :: (Profunctor p, Functor f)
  2. => p (Bool, a) (f (Bool, a'))
  3. -> p (Validation a a) (f (Validation a' a'))
#

Isomorphism between Validation a a and (Bool, a), where False corresponds to Failure.

Example2 expressions
import Control.Lens(view)view codiagonal (Failure "x" :: Validation String String)(False,"x")
Example1 expression
view codiagonal (Success "x" :: Validation String String)(True,"x")