either-n-0.1.0.0: changelog.md
# Changelog
## 0.1.0.0
* Add Data.Either3, re-exporting Data.Either3.Either3 and Data.Either3.Either3T
* Add Either3 a b c, with constructors First3, Second3 and Third3, and
instances for Eq, Eq1, Eq2, Ord, Ord1, Ord2, Show, Show1, Show2, Generic,
Generic1, Data, NFData, Semigroup, Functor, Apply, Applicative, Bind, Monad,
Alt, Extend, Selective, Foldable, Traversable, Bifunctor, Bifoldable,
Bitraversable, Swap, FunctorWithIndex, FoldableWithIndex,
TraversableWithIndex, MonadZip, Each, Injection1, Injection2 and Injection3
* Add Either3T f a b c, a newtype for f (Either3 a b c), as ExceptT e m a is
for m (Either e a), with Wrapped and Rewrapped instances for converting to
and from f (Either3 a b c). Instances for Generic, Generic1, Data, NFData,
Eq, Eq1, Eq2, Ord, Ord1, Ord2, Show, Show1, Show2, Semigroup, Functor,
Apply, Applicative, Bind, Monad, Alt, Extend, Selective, Foldable,
Traversable, Bifunctor, Bifoldable, Bitraversable, Swap,
FunctorWithIndex, FoldableWithIndex, TraversableWithIndex and Each, each
with the corresponding constraint on f; instances lifted from f, as for
MaybeT, for MonadIO, MonadFail, MonadState, MonadReader, MonadWriter,
MonadError, MonadRWS, MonadCont and MonadZip; and instances for
f = Identity for Injection1, Injection2, Injection3, GetEither3,
HasEither3 and AsEither3
* Add either3Identity, the isomorphism between Either3 a b c and
Either3TIdentity a b c
* Add isomorphisms reordering the type parameters of Either3 (either3ACB,
either3BAC, either3BCA, either3CAB, either3CBA) and of Either3T
(either3TACB, either3TBAC, either3TBCA, either3TCAB, either3TCBA)
* Add classy optics GetEither3, HasEither3, ReviewEither3, AsEither3 and
GetEither3T, HasEither3T, ReviewEither3T, AsEither3T. Instances of HasX
define setX, and instances of AsX define matchX; the lens and prism follow
from them
* Add rewrite rules fusing compositions of fmap, bimap, foldMap, foldr,
traverse, bifoldMap and bitraverse for Either3 and Either3T
* Add hedgehog property tests for the laws of every instance, using
hedgehog-fn to generate functions
* Add Injection1 .. Injection19 classes (Data.Lens.Injection.InjectionN), the sum-type
duals of Field1 .. Field19 from lens, with prisms _I1 .. _I19, and a
Data.Lens.Injection module re-exporting them
* Add Injection instances for Either, Maybe, Bool, Ordering, [], Identity,
(), Data.Functor.Sum and GHC.Generics (:+:). The second injection of []
focuses on NonEmpty
* Add a GHC.Generics default for each InjectionN class, so that an instance
for a type with a Generic instance needs no body
* Add Data.Lens.Injection.Generic, with injection, a prism to the nth
constructor of any type with a Generic instance, where n is given by a
proxy, such as Proxy @0. The generic machinery behind it is in
Data.Lens.Injection.Generic.Internal, which is not part of the stable API