[Haskell-cafe] Newbie question about tuples

Andrew Coppin andrewcoppin at btinternet.com
Thu Jul 12 14:14:24 EDT 2007


peterv wrote:
> Hi,
>
> I have a couple of questions about tuples.
>
> Q1) Is it possible to treat a tuple of N elements in a generic way? So
> instead of writing functions like lift1 e1, lift2 (e1,e2), lift3 (e1,e2,e3)
> just one function liftN that works on tuples of any length? 
>   

The only thing the libraries provide, as far as I can tell, is the fact 
that tuples are all Functors. (In other words, you can apply some 
function to all the elements to get a new tuple.) I think that's about 
it. I doubt you can use that to define lifting functions...

> Q2) (Maybe related to Q1) Can I convert a tuple of length N to a
> heterogeneous list (using "forall" aka existentially quantified types) and
> vice versa?
>   

I think you're going to need to play with type classes to do that.

> Q3) Suppose I want to declare an instance of Num on all tuple types having
> (Num instances) as elements; is this possible? 
>
> I tried
>
>        instance Num a => Num (a,a) where .
>
> but this fails
>
> I also tried
>
>        instance Num a => Num ((,) a a) where .
>
> but that also fails.
>   

I tried to do this a while ago and couldn't figure out how. :-(



More information about the Haskell-Cafe mailing list