[Haskell-cafe] Why does `mzip /= liftM2 (,)`

MarLinn monkleyon at gmail.com
Thu Apr 20 19:19:37 UTC 2017

> The question is why does
> ```
> mzip /= liftM2 (,)
> ```

I don't have any evidence, but my gut feeling is that indeed mzip == 
liftM2 (,) == liftA2 (,), but that MonadZip just predates many advances, 
and that it's not used often enough to warrant changing. Especially 
because changing stuff in base comes with huge costs and long debates.

Today I would expect something similar to look somewhat more like this:

class Applicative f => Unzippative f where
     unzipF :: f (a,b) => (f a, f b)

I personally can't remember a single time that function would have come 
in handy, so I'm happy with Applicative. And I'm projecting that 
experience onto others and drawing the conclusion of "Meh.".

But if you find out more after
> investigating for next 30 minutes

I'd be interested to hear. ;)


More information about the Haskell-Cafe mailing list