Class Question
Johan Baltié
johan.baltie@epita.fr
Thu, 23 Jan 2003 07:55:57 +0100
Le Jeudi 23 Janvier 2003 06:40, Matthew Donadio a écrit :
> Hi all,
>
> I have yet another question. I think I have too much time on my hands.
>
> I have two functions:
> > rf :: (RealFloat a, Integral b) => [a] -> b -> Complex a
> > rf x k = ...
> >
> > cf :: (RealFloat a, Integral b) => [Complex a] -> b -> Complex =
a
> > cf x k = ...
>
> I would like to add these to the class system so I can create an
> overloaded version, f.
>
> From my understanding of the Report, the following should work, but I
> get an error, which I really don't understand.
>
> > class (Fractional a) => Floating a where
> > f :: (Integral b) => [a] -> b -> a
> >
> > instance (RealFloat a) => Floating a where
> > f x k = rf x k
> >
> > instance (RealFloat a) => Floating (Complex a) where
> > f x k = cf x k
>
> hugs98 spits out
>
> ERROR "f.lhs":59 - Syntax error in instance head (constructor
> expected)
>
> where line 59 is the first instance declaration. Can anyone give me
> some guidance, or hints, here?
>
> Thanks a million.
On the first "instance" you're trying to instantiate "any type a that is a
instance of RealFloat".
AFAIK you can instantiate only "real" data types like "Complex a". (sorry for
the "real" that is not the good term, but I'm just waking up :) )
--
Ciao
Jo