packages feed

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