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