
The class is altogether annoying because it has a Monad superclass instead
of a Functor one, excluding perfectly good zippable functors like Map k,
IntMap k, and even, ironically, ZipList. What do you mean by the opposite
facing information preservation law? And what do you have against munzip,
aside from the fact that it looks like it wants to be in the
too-lofty-for-its-like circle of Functor?
On Dec 29, 2016 11:22 PM, "Edward Kmett"
MonadZip doesn't really explain how strict mzipWith and (especially) munzip should be. For example, we could have
munzip (Node (a, b) ts) = (Node a as, Node b bs) where (as, bs) = Data.List.unzip (map munzip ts)
or we could make some or all of the pattern matches lazy, or we could use something lazier than Data.List.unzip, or we could make everything completely spine-strict (surely unwise).
Does anyone have a particular preference, or a particular reason to prefer one choice over others? If not, I think we should go with the simple version above.
David Feuer _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries