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

Safe HaskellSafe

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