<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Feb 24, 2014 at 11:21 PM, Sven Panne <span dir="ltr"><<a href="mailto:svenpanne@gmail.com" target="_blank">svenpanne@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Regarding upper bounds: I never understood what their advantage should<br>
be, IMHO they only lead to a version hell where you can't compile your<br>
stuff anymore *only* because of the bounds, not because of anything<br>
else.</blockquote><div><br></div><div>IMHO this is a bad enough outcome, but it can also allow you to compile code in a way that it behaves incorrectly (if a function's behavior has changed but the type has not).  It also leads to a situation where cabal generates what it thinks is an acceptable dependency solution, but that solution fails, making the user need to solve the dependency tree themselves and specify constraints on the cabal command line.</div>
<div><br></div><div>This is reason the PVP specifies upper bounds on versions: it makes that work the responsibility of the developer rather than the user.  At the time the PVP was introduced, users often experienced serious hardships when installing various combinations of packages, and IIRC it was widely perceived that developers should shoulder the load of making sure their packages would work together as specified.  However, I think the PVP may have been a victim of its own success; user complaints about botched installs and invalid install plans seem quite rare these days, and some developers are pushing back against this extra workload.  (or maybe there are no Haskell users?)</div>
<div><br></div><div>John L.</div></div><br></div></div>