
Hi-- I'm back to trying to teach myself Haskell, and I've already got myself into a muddle again. I've begun playing a bit with the type system, and typeclasses and figured I'd build a type to hold angular values since it would be nice to force the type system to check whether I'm using degrees or radians: data Angle a = Radians a | Degrees a deriving (Eq, Show) Then I decided I wanted to create a (gratuitous) type class to abstract out the radian/degree conversions: class Angular a where rad :: a -> a rad x = pi * (deg x) / 180 deg :: a -> a deg x = 180 * (rad x) / pi Then tried to make Angle an instance of Angular (such as Float in an instance of Floating): instance Angular (Angle a) where rad (Radians x) = x deg (Degrees x) = x I've removed all the context clauses, rather than pick one of many equally broken implementations to share, because that seems to be a large part of where my problems are. Is this just an issue of syntax, or am I doing something fundamentally wrong? Thanks-- Greg