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

Several data-types like Either but with differing properties and type-class instances.
Library support is provided for those different representations, include
lens-related functions for converting between each and abstracting over their
similarities.
AccValidation
The AccValidation data type is isomorphic to Either, but has an instance
of Applicative that accumulates on the error side. That is to say, if two
(or more) errors are encountered, they are appended using a Semigroup
operation.
As a consequence of this Applicative instance, there is no corresponding
Bind or Monad instance. AccValidation is an example of, "An applicative
functor that is not a monad."
Validation
The Validation data type is isomorphic to Either and has a Monad
instance that does the same as Either. The only difference to Either is
the constructor names and surrounding library support.
ValidationT
The ValidationT data type is the monad transformer for Validation. An
instance of MonadTrans is provided for `(ValidationT err)`. Due to the
arrangement of the ValidationT type constructor, which permits a `MonadTrans
instance, there is no possible Bifunctor instance. Consequently, the
ValidationB data type provides a Bifunctor instance (but not a
MonadTrans instance). Library support is provided to exploit the isomorphism
to ValidationB.
Note that since AccValidation is not a monad, there is also no corresponding
monad transformer for this data type.
ValidationB
The ValidationB data type is similar to the monad transformer for
Validation (ValidationT), however, due to the arrangement of the
ValidationB type constructor, which permits a Bifunctor instance, there is
no possible MonadTrans instance. Consequently, the ValidationT data type
provides a MonadTrans instance (but not a Bifunctor instance). Library
support is provided to exploit the isomorphism to ValidationT.
Flags
Automatic Flags
| Name | Description | Default |
|---|---|---|
| small_base | Choose the new, split-up base package. | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- validation-0.5.0.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.5.0, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.6.0, 0.6.1, 0.6.2, 0.6.3, 1, 1.1, 1.1.1, 1.1.2, 1.1.3 |
|---|---|
| Change log | changelog |
| Dependencies | base (>=4.8 && <5), bifunctors (>=3.0), lens (>=4.0 && <5), mtl (>=2.0 && <2.3), semigroupoids (>=4.0), semigroups (>=0.8), transformers (>=0.3 && <0.5) [details] |
| License | BSD-3-Clause |
| Copyright | Copyright (C) 2014,2015 NICTA Limited |
| Author | Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego>, Nick Partridge <nkpart> |
| Maintainer | Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ> <dibblego>, Nick Partridge <nkpart> |
| Uploaded | by TonyMorris at 2015-02-17T04:40:27Z |
| Revised | Revision 1 made by qfpl at 2017-10-09T04:30:48Z |
| Category | Data |
| Home page | https://github.com/NICTA/validation |
| Bug tracker | https://github.com/NICTA/validation/issues |
| Source repo | head: git clone git@github.com:NICTA/validation.git |
| Distributions | LTSHaskell:1.1.3, NixOS:1.1.3, Stackage:1.1.3 |
| Reverse Dependencies | 23 direct, 28 indirect [details] |
| Downloads | 26823 total (66 in the last 30 days) |
| Rating | 2.5 (votes: 3) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs available [build log] Last success reported on 2015-02-17 [all 1 reports] |