<div dir="ltr"><div>On Mon, Mar 23, 2015 at 4:35 AM, Sven Panne <span dir="ltr"><<a href="mailto:svenpanne@gmail.com" target="_blank">svenpanne@gmail.com</a>></span> wrote:<br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">2015-03-23 6:13 GMT+01:00 Mark Lentczner <<a href="mailto:mark.lentczner@gmail.com">mark.lentczner@gmail.com</a>>:<br>
</span>> [...] exceptions & multipart - needed by cgi - is exceptions now subsumed by<br>
> something in transformers? [...]<br>
<br>
Coincidentally, Edward Kmett pointed me to the exceptions package<br>
while I was trying to generalize some of my packages from using plain<br>
IO to MonadIO. Alas, the transformers package still doesn't subsume<br>
the exceptions package, but IMHO it really should. Looking at the<br>
import list of e.g. Control.Monad.Catch alone is already indicating<br>
that. :-) </blockquote><div><br></div><div><div>transformers remains rather rigidly locked into Haskell 98/2010.<br></div><div><br></div><div>mtl uses comparatively few extensions.</div><div><br></div><div>exceptions uses rank-3 types in the API, which is something we currently don't do in transformers or the mtl.</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">BTW: System.Console.Haskeline.MonadException has something<br>
similar, but far less complete, too, but that's really a strange place<br>
for such a feature. How did it end up there?<br></blockquote><div><br></div><div><div>Haskeline makes a few weird choices. e.g. The opacity of the InputT type pretty much renders the library very difficult to use the moment you need to do something that the package doesn't anticipate, like work with InputT in a transformer and expect any instances to exist, handle exceptions around _it_ in turn, lift monad transformers over it yourself, etc. =( I have more code for working around this aspect of Haskeline than I do for working with it. But it appears, in this case, Judah needed it for working with InputT, and chose to implement that by lifting transformer-by-transformer, since internally InputT is made by wrapping up an mtl-based type in a newtype.</div></div><div><br></div><div>-Edward</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5">_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</div></div></blockquote></div><br></div></div>