Closed bergmark closed 8 years ago
Interesting. Apparently this is due to the recent addition of PolyKinds
. I thought that would be a non-breaking change but it seems to be interfering with type inference here
I'll revert the change and release as mmorph-1.0.9
and blacklist mmorph-1.0.8
It's interesting to finally get an example of enabling PolyKinds
breaking consumers. I've been wondering how likely something like that would be...
Strictly speaking, the breakage wasn't the fault of mmorph
, but rather it's due to a GHC bug present in 8.0.1 and earlier. In fact, I verified that ether
compiles with the poly-kinded MFunctor
on GHC 8.0.2 and later.
If we did wish to support poly-kinded MFunctor
, we could submit a patch to ether
that works around that bug. (We'd just have to make sure MFunctor
wasn't a derived instance on sufficiently old versions of GHC.)
We'd also need to patch ChannelT
.
I guess my question is: now that the problem is fixed in GHC 8.0.2 do I need to bump the major version number if I reintroduce the original change or is it safe to do a minor release?
Going from a mono-kinded class type signature to a poly-kinded one is, in some sense, an API change. Ideally, it'd be a harmless one, but in practice there tends to be little interactions in kind inference that inevitably cause some things to break (and that's aside from GHC bugs like the one noted in https://github.com/Gabriel439/Haskell-MMorph-Library/issues/32#issuecomment-261808442).
My vote is for a major version bump to be on the safe side.
ether
fails builds against mmorph-1.0.8 but not 1.0.6: