exponent operator haskell
# There are actually three exponentiation operators: (^), (^^) and (**).
# ^ is non-negative integral exponentiation,
# ^^ is integer exponentiation, and ** is floating-point exponentiation
(^) :: (Num a, Integral b) => a -> b -> a
(^^) :: (Fractional a, Integral b) => a -> b -> a
(**) :: Floating a => a -> a -> a