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@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@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries