To be nitpicky myFunction >>= \() -> x would break. It's unlikely that anyone uses it like this, but I've been on the safe side in the past and major bumped for cases like this. I think it's unwise to take shortcuts in the other direction.

- Adam



On Mon, Dec 15, 2014 at 10:44 AM, Johan Tibell <johan.tibell@gmail.com> wrote:
I think the question is: can this change cause existing code to stop compiling (perhaps assuming people aren't using -Werror)? I don't think it can but perhaps generalizing the type could make type inference fail somewhere due to an ambiguous type.

We really need a PVP guide that just lists lots of examples, each with a note of what kind of change it is (i.e. major, minor, or patch).

On Mon, Dec 15, 2014 at 10:00 AM, Michael Snoyman <michael@snoyman.com> wrote:
I'm a little bit uncertain of the PVP guidelines in a certain case[1], so I'd like to get some guidance/clarity. Suppose I have a library which provides the function:

myFunction :: IO ()
myFunction = forever $ putStrLn "Still here" >> threadDelay 10^6

Later, I realize (or someone points out to me) that I've over-specified the type signature, and really myFunction should be:

    myFunction :: IO a

In this case, does the PVP specify that we should have a minor or a major version bump? I'm not certain if this counts as a breaking change or not.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe