[Haskell-cafe] Tupling functions

Chris Smith cdsmith at gmail.com
Wed Sep 14 04:03:48 CEST 2011

On Wed, 2011-09-14 at 13:56 +1200, Richard O'Keefe wrote:
> I don't *expect* to implement anything just once.  I am perfectly
> happy writing as many instance declarations as I have tuple sizes
> that I care about.

Ah, okay... then sure, you can do this:

class Tuple a b c | a b -> c where
    tuple :: a -> b -> c

instance Tuple (a -> b, a -> c) a (b,c) where
    tuple (f,g) x = (f x, g x)

and so on...  You'll need fundeps (or type families if you prefer to
write it that way), and probably at least flexible and/or overlapping
instances, too, but of course GHC will tell you about those.

Chris Smith

More information about the Haskell-Cafe mailing list