# [Haskell-cafe] Types depending on tuples.

Mike Meyer mwm at mired.org
Tue Aug 26 08:54:41 UTC 2014

```Weird. I thought that's what I tried. Must have done something else.

Thanks!

On Tue, Aug 26, 2014 at 3:31 AM, Mike Izbicki <mike at izbicki.me> wrote:

> This works just fine for me:
>
> class Vector a where
>     toLists :: a -> [Double]
>
> instance Vector (Double,Double,Double) where
>     toLists (a,b,c)=[a,b,c]
>
> On Tue, Aug 26, 2014 at 1:17 AM, Mike Meyer <mwm at mired.org> wrote:
> > It's there, but in the text:
> >
> > class Vector a where
> >    toLists :: a -> [Double]
> >
> >
> > On Tue, Aug 26, 2014 at 2:59 AM, Mike Izbicki <mike at izbicki.me> wrote:
> >>
> >> You never actually provided the Vector type class, so it's difficult
> >> to tell what exactly you're trying to do.
> >>
> >> On Tue, Aug 26, 2014 at 12:46 AM, Mike Meyer <mwm at mired.org> wrote:
> >> > I'm doing some geometry in 2 and 3 dimensions. To do this, I've got
> >> > Vector2d
> >> > and Vector3d classes, which are basically just wrappers around 2 and
> >> > 3-tuples of doubles:
> >> >
> >> > type Vector2d = (Double, Double)
> >> > type Vector3d = (Double, Double, Double)
> >> >
> >> > I've also got a typeclass Vector so I can do polymorphic things on
> them:
> >> >
> >> > type Vector3d = (Double, Double, Double)
> >> >
> >> > (Ok, polymorphic thing).
> >> >
> >> > I now have a need to convert lists of Vector's to a list of lists of
> >> > Doubles. I'd like that to be part of the Vector typeclass, but - well,
> >> > declaring it is interesting.
> >> >
> >> > I can't just add a method "toLists :: a -> [Double]", because
> (according
> >> > to
> >> > ghc), there's no match between the expected type 'Double' and the
> actual
> >> > type '[t1]'.
> >> >
> >> > Can I declare this typeclass?
> >> >
> >> > _______________________________________________
> >> > Haskell-Cafe mailing list