Fractional package:ghc
Fractional Literal
Used (instead of Rational) to represent exactly the floating point
literal that we encountered in the user's source program. This allows
us to pretty-print exactly what the user wrote, which is important
e.g. for floating point numbers that can't represented as Doubles (we
used to via Double for pretty-printing). See also #2245. Note
[FractionalLit representation] in GHC.HsToCore.Match.Literal The
actual value then is: sign * fl_signi * (fl_exp_base^fl_exp) where
sign = if fl_neg then (-1) else 1
For example FL { fl_neg = True, fl_signi = 5.3, fl_exp = 4,
fl_exp_base = Base10 } denotes -5300
The integer should already be negated if it's negative.
The arguments should already be negated if they are negative.