validation: A data-type like Either but with an accumulating Applicative
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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
.
Properties
Versions | 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.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 (>=3 && <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> |
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 |
Uploaded | by TonyMorris at 2015-02-17T04:39:30Z |
Modules
[Index]
- Data
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 (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees