Proposal: Move `mapM` and `sequence` out of Traversable

David Feuer david.feuer at gmail.com
Sat Nov 7 20:03:39 UTC 2020


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.

On Sat, Nov 7, 2020 at 2:56 PM Emily Pillmore <emilypi at cohomolo.gy> wrote:

> Hi All,
>
> 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:
>
> ```haskell
> mapM :: Traversable t ⇒ Monad m ⇒ (a -> m b) -> t a -> m (t b)
> mapM = traverse
>
> sequence ::  Traversable t ⇒ Monad m=> t (m a) -> m (t a)
> sequence = sequenceA
> ```
>
> 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?
>
> Cheers,
> Emily
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20201107/3089b1cb/attachment.html>


More information about the Libraries mailing list