Proposal: Better power for Rational
igloo at earth.li
Sat Sep 25 08:21:10 EDT 2010
On Sat, Sep 25, 2010 at 02:34:16AM +0200, Daniel Fischer wrote:
> ratPow :: Integral a => Rational -> a -> Rational
> ratPow _ e
> | e < 0 = error "Negative exponent"
> ratPow _ 0 = 1 :% 1
> ratPow r 1 = r
> ratPow (0:%y) _ = 0 :% 1
> ratPow (x:%1) e = (x^e) :% 1
> ratPow (x:%y) e = (x^e) :% (y^e)
Are you deliberately only doing this for Rational, rather than (Ratio t)
in general, to avoid differences in behaviour of Integral types?
If it was generalised, then we'd presumably want to use % for the final
result, so that
(2^16 / 3) ^ 2 :: Ratio Int32
is (0 % 1) rather than (0 % 9).
More information about the Libraries