Question about typing

Yoann Padioleau Yoann.Padioleau@irisa.fr
09 Apr 2001 14:33:47 +0200


Matt Harden <matth@mindspring.com> writes:
> 
>    zip  :: ZipFunctor f => f a -> f b -> f (a,b)
>    zip  = zipWith  (,)
>    zip3 :: ZipFunctor f => f a -> f b -> f c -> f (a,b,c)
>    zip3 = zipWith3 (,,)
> 
> One can easily create ZipFunctor instances for trees and other data
> structures.  I can provide examples if you like.  With multiple
> parameter type classes (MPTCs, they are not in Haskell 98) as well as
> functional dependencies (also not in h98), one can also create a
> "Zippable" class to generalize the zip function over multiple tuple
> types and eliminate zip3, zip4, etc.

can you explain how you do that ?? (i dont know what is
 functional dependencies, but i think i understand multiple parameter type classes
 and i dont see how do make something that avoid to define a zip3 zip4 ....