<div dir="auto">I'm opposed to moving it to base. This locks in base to GHC's fundamentally broken model of IO (in terms of functions passing state tokens) and also ties together the fundamentally different concepts of IO and ST. These issues tend to crop up in strictness analysis, and GHC has to continually tweak various internal hacks to keep users from noticing (most of the time). Let's not make future Haskells make these same decisions.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 8, 2020, 9:18 AM Carter Schonwald <<a href="mailto:carter.schonwald@gmail.com" target="_blank" rel="noreferrer">carter.schonwald@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">This is something I’ve pondered on and off, And the classes PrimMonad and PrimMonadBase are super stable </div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Argument in favor of base : </div><div dir="auto"><br></div><div dir="auto">there’s absolutely code in base, and packages like array, which would benefit from PrimMonad. Plus it might allow more reuse / encourage more ST monad code in the wild? (I always feel like ST monad is underused. )</div><div dir="auto"><br></div><div dir="auto">Argument against base: </div><div dir="auto">Then a lot of PrimMonad instances would need to live in transformers. And I’m not sure if maintainers over there would want that? </div><div dir="auto"><br></div><div dir="auto">Argument in favor of mtl: it’s where all the other transformer stack stuff gets defined. So all the upkeep for monad instances is already going on there regularly. </div><div dir="auto"><br></div><div dir="auto">Argument against mtl : aside from concentrating the upkeep on transformer stack instances it seems like it wouldn’t enable new improvements to base. </div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">Another option is to have some sort of clone of the class in base , as long as it pays for itself in code reuse / simplification within base</div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" rel="noreferrer noreferrer" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>