data Int ; data Int data Ratio a = a :% a type Rational = Ratio Integer data Float ; data Double
class (Eq a, Show a) => Num a where (+), (-), (*) :: a -> a -> a fromInteger :: Integer -> a class (Num a) => Fractional a where (/) :: a -> a -> a fromRational :: Rational -> a class Fractional a => Floating a where exp, log, sqrt :: a -> a