On Wed, May 7, 2014 at 1:34 PM, Tom Ellis <tom-lists-haskell-cafe-2013@jaguarpaw.co.uk> wrote:
On Wed, May 07, 2014 at 12:15:58PM +0200, Herbert Valerio Riedel wrote:
> On 2014-05-07 at 11:47:25 +0200, Henning Thielemann wrote:
> > Am 07.05.2014 11:40, schrieb Herbert Valerio Riedel:
> >> On 2014-05-07 at 00:32:33 +0200, Carter Schonwald wrote:
> >>> should the 0.4 release be temporarily marked deprecated so that breakages
> >>> stop for a wee bit?
> >>
> >> I know, some of you may not want to hear this, but this will only bite
> >> packages not following the PVP (i.e. those that didn't have upper
> >> bounds)... transformers-0.4 was a major version bump after all, so it
> >> *is* allowed to break the API (whether that was a good design decision
> >> is a different discussion though)
> >
> > However, turning the runIdentity function back into a record field
> > name in 0.4.1.0, was another breaking change that only got a minor
> > version bump. :-(
>
> Btw, as I can't think of an example right now, what would be an example
> for code that works with transformers-0.4.0.0 but wouldn't compile
> anymore with transformers-0.4.1.0?

Surely just the reverse of the breaking change?

    https://github.com/ibotty/streaming-commons/commit/b1137852e4f58520ad65d01b20623a968c18ae8f

No, that code is compatible with transformers 0.3, 0.4, and 0.4.1. With the syntax:

    import Data.Functor.Constant (Constant (Constant), getConstant)

We're importing the data type Constrant, the data construct Constant for that data type, and the function getConstant. It doesn't matter if getConstant is a normal function or a field accessor, it can still be accessed by that syntax.

Michael