validation-0.3.0: A data-type like Either but with an accumulating Applicative

Safe HaskellSafe-Inferred

Data.Validation

Contents

Description

Data types similar to Data.Either that are explicit about failure and success.

Synopsis

Data types

data AccValidation err a Source

A value of the type err or a, however, the Applicative instance accumulates values. This is witnessed by the Semigroup context on the instance. Note that there is no @Monad@ such that @ap = (<*>).

>>> _Success # (+1) <*> _Success # 7 :: AccValidation String Int
AccSuccess 8
>>> _Failure # ["f1"] <*> _Success # 7 :: AccValidation [String] Int
AccFailure ["f1"]
>>> _Success # (+1) <*> _Failure # ["f2"] :: AccValidation [String] Int
AccFailure ["f2"]
>>> _Failure # ["f1"] <*> _Failure # ["f2"] :: AccValidation [String] Int
AccFailure ["f1","f2"]

Instances

Typeable2 AccValidation 
Bitraversable AccValidation 
Bifunctor AccValidation 
Bifoldable AccValidation 
Swapped AccValidation 
Validate AccValidation 
Functor (AccValidation err) 
Semigroup err => Applicative (AccValidation err) 
Foldable (AccValidation err) 
Traversable (AccValidation err) 
(Semigroup err, Monoid err) => Alternative (AccValidation err) 
Semigroup err => Alt (AccValidation err) 
Semigroup err => Apply (AccValidation err) 
(Eq err, Eq a) => Eq (AccValidation err a) 
(Data err, Data a) => Data (AccValidation err a) 
(Ord err, Ord a) => Ord (AccValidation err a) 
(Show err, Show a) => Show (AccValidation err a) 
Monoid e => Monoid (AccValidation e a)
((x `mappend` y) `mappend` z) == (x `mappend` (y `mappend` z :: AccValidation [String] Int))
mempty `mappend` x == (x :: AccValidation [String] Int)
x `mappend` mempty == (x :: AccValidation [String] Int)
Semigroup e => Semigroup (AccValidation e a)
((x <> y) <> z) == (x <> (y <> z :: AccValidation [String] Int))

data Validation err a Source

A value of the type err or a and isomorphic to Data.Either.

>>> _Success # (+1) <*> _Success # 7 :: Validation String Int
Success 8
>>> _Failure # ["f1"] <*> _Success # 7 :: Validation [String] Int
Failure ["f1"]
>>> _Success # (+1) <*> _Failure # ["f2"] :: Validation [String] Int
Failure ["f2"]
>>> _Failure # ["f1"] <*> _Failure # ["f2"] :: Validation [String] Int
Failure ["f1"]

data ValidationT m err a Source

The transformer version of Validation.

Constructors

ValidationT 

Fields

runValidationT :: m (Validation err a)
 

Prisms

class Validate f whereSource

Methods

_Failure :: Prism (f e1 a) (f e2 a) e1 e2Source

_Success :: Prism (f e a) (f e b) a bSource

Isomorphisms