packages feed

endo-0.3.0.1: ChangeLog.md

# ChangeLog / ReleaseNotes


## Version 0.3.0.1

* Using CPP to get rid of redundant import warning when compiled without
  `Data.Functor.Classes`, i.e. when compiled with base <4.9 and
  [transformers][] <0.5. (**minor change**)
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.3.0.1>


## Version 0.3.0.0

* Introducing type `:->` to simplify type signatures of endomorphism folding
  functions that restrict type of a result. (**new**)
* Type class `AnEndo` moved in to a separate module `Data.Monoid.Endo.AnEndo`.
  Definitions are reexported by `Data.Monoid.Endo.Fold`, therefore providing
  backward compatible API. (**change**)
* Introducing `instance AnEndo a => AnEndo (Identity a)`. (**new**)
* Introducing `FromEndo` type class for conversion of endomorphism in to a
  value. It is a dual to `AnEndo` type class. This type class resides in its
  own module `Data.Monoid.Endo.FromEndo`. (**new**)
* Introducing `ApplyEndo` newtype that provides easier endomorphism evaluation
  in cases when there is an "obvious" default value. This type has its own
  module `Data.Monoid.Endo.Apply` that also provides various helper functions
  and type class instances. (**new**)
* Providing `Eq1`, `Ord1`, `Read1` and `Show1` instances if built with
  [transformers package][transformers] >=0.5 or base >=4.9 (i.e.
  GHC >=8.0.1) is available. (**new**)
* Providing `Generic1` instance for `WrappedFoldable`. (**new**)
* Introducing `instance AnEndo a => AnEndo (Option a)`, but only when compiled
  with base >=4.9, since that is the first version of base which contains
  `Semigroup`. (**new**)
* Bumped upper bound of [transformers package][transformers] to include 0.5.\*
  versions. (**change**)
* Synchronized API documentation of `Data.Monoid.Endo.Fold` with README.
  (**trivial change**)
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.3.0.0>


## Version 0.2.0.1

* API documentation ehancements and clarifications.
* Explicit implementation of `aDualEndo` for
  `instance AnEndo a => AnEndo (Maybe a)`.
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.2.0.1>


## Version 0.2.0.0

* Default implementation for `anEndo` method of 'AnEndo' type class, which is
  now defined as: `anEndo = getDual . aDualEndo`. As a consequence it is now
  possible to define complete instances of `AnEndo` by providing either
  `anEndo` or `aDualEndo`. (**new**, **change**)
* Introducing associated type `Result` to `FoldEndoArgs` type class. This
  allows result of the whole folding to be explicitly stated in a type
  signature. (**new**, **change**)
* Introducing functions `embedEndoWith` and `embedDualEndoWith`. Both can be
  used to simplify application of endomorphisms that are result of folding.
  (**new**)
    - `embedEndoWith :: (AnEndo e, EndoOperatesOn e ~ a) => (Endo a -> b) -> e
      -> b`
    - `embedDualEndoWith :: (AnEndo e, EndoOperatesOn e ~ a) => (Dual (Endo a)
      -> b) -> e -> b`
* Introducing `instance AnEndo (Proxy a)`, which is useful in cases when one
  needs to force constraint `EndoOperatesOn args ~ a` where `a` is the `a` from
  `Proxy a`. This is done by encoding value of `Proxy` in to identity
  endomorphism that operates on specified type `a`. (**new**)
* Introducing `instance (Monoid c, FoldEndoArgs r) => FoldEndoArgs (Const c
  r)`, which is useful in cases when one needs to discard the computation and
  return a constant instead. (**new**)
* Bumping upper bounds on base and between, therefore it now builds on GHC 7.10
  with base 4.8. (**new**)
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.2.0.0>


## Version 0.1.0.2

* Bugfix release.
* Bugfix: Unable to compile with [transformers][] >= 0.4 (again).
* Minor documentation updates.
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.1.0.2>


## Version 0.1.0.1

* Bugfix release.
* Bugfix: Unable to compile with [transformers][] >= 0.4.
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.1.0.1>


## Version 0.1.0.0

* **This version doesn't work with [transformers][] >= 0.4.**
* First public release.
* Uploaded to [Hackage][]: <http://hackage.haskell.org/package/endo-0.1.0.0>



[Hackage]:
  http://hackage.haskell.org/
  "HackageDB (or just Hackage) is a collection of releases of Haskell packages."
[transformers]:
  https://hackage.haskell.org/package/transformers
  "Package transformers on Hackage."

<!--
  vim: filetype=markdown softtabstop=4 shiftwidth=4 expandtab
-->