`Zip`

and `zip`

aren’t such a great choice of names after all. I’d like the this notion to coincide with the `Monoidal`

operation in section 7 of `Applicative`

instance. So the operation on lists would be cross product, not `zip`

. On `ZipList`

and `Stream`

, `zip`

is fine.
]]>Meanwhile, here’s a tweaked definition of `prod`

:

Or replace ``zip``

with `&&&`

.

import Control.Morphism.Cata prod :: Functor f => Algebra f a -> Algebra f b -> Algebra f (a,b) prod u v x = (u $ fmap fst x,v $ fmap snd x)

which generalises this to all catamorphisms.

]]>