<div dir="ltr">I'm generally in favor of removing `sequence`, and probably also `sequenceA`. Can you demonstrate that there can be no instance for which `mapM` is much more efficient than `traverse`? Consider especially types based on monadic streams.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 7, 2020 at 2:56 PM Emily Pillmore <<a href="mailto:emilypi@cohomolo.gy">emilypi@cohomolo.gy</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><div><div style="display:none;border:0px;width:0px;height:0px;overflow:hidden"><img alt="" width="1" height="0" style="display: none; border: 0px; width: 0px; height: 0px; overflow: hidden;"></div><div><div>Hi All,<br></div><div><br></div><div>

I have a proposal for the `base` library:  I would like to move `mapM` and `sequence` out of the class definition for `Traversable`, redefining them as toplevel aliases: <br><br>```haskell</div><div>mapM :: Traversable t ⇒ Monad m ⇒ <span>(a -> m b) -> t a -> m (t b)</span><br></div><div><span>mapM = traverse</span><br></div><div><br></div><div>sequence :: <span><span> </span>Traversable t ⇒ Monad m=> t (m a) -> m (t a)</span><br></div><div><span>sequence = sequenceA</span><br></div><div>```<br></div><div><br></div><div>This slims `Traversable` by 50%. This would be a very small breaking change, which is completely tractable, but a great improvement for the ecosystem imo. Thoughts? What timeline should we shoot for with a change like this? <br></div><div><br></div><div>Cheers,<br></div><div>Emily</div><div><br></div></div><br><div></div></div></div></div>_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div>