You don't need a type class, you can just define your functions with pattern matching:
rad :: Angle a -> a
rad (Radians x) = x
rad (Degrees x) = pi * (deg x) / 180
deg :: Angle a -> a
deg (Radians x) = 180 * (rad x) / pi
deg (Degrees x) = x
Alternatively, you can define Radians and Degrees as separate types and use a type class:
data Radians a = Radians a
data Degrees a = Degrees a
class Angular a where
rad :: a b -> b
deg :: a b -> b
instance Angular Radians where
rad (Radians x) = x
deg (Radians x) = 180 * (rad x) / pi
instance Angular Degrees where
rad (Degrees x) = pi * (deg x) / 180
deg (Degrees x) = x
This would be extensible, but it this case not really useful.