On 14/09/2011, at 1:44 PM, Chris Smith wrote:

> On Wed, 2011-09-14 at 13:35 +1200, Richard O'Keefe wrote:
>> I would like to have
>> 
>>      tuple (f1,f2)       x = (f1 x, f2 x)
>>      tuple (f1,f2,f3)    x = (f1 x, f2 x, f3 x)

> There is no polymorphism across tuple structures,

I know that.  I know how tuples get to be instances of Ix,
one instance declaration for each of (,) (,,) (,,,) ....

> so if you absolutely
> *must* have n-tuples instead of nested 2-tuples, then you just need to
> implement the new functions as needed.  You can't implement that only
> once.

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.  It's just that I can't see how to get the types
right, because in

    class Thingy t ... where
        tuple :: t -> a -> b

b depends on t and possibly a, so

    instance Thingy (,,) where
        tuple (f,g,h) x = (f x, g x, h x)

it's not an arbitrary b.  Can this be done with functional dependencies?





_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to