PROPOSAL: Restrict the type of (^), (^^), and add genericPower, genericPower'

Henning Thielemann lemming at henning-thielemann.de
Sat Nov 17 10:09:20 EST 2007


On Sat, 17 Nov 2007, Ian Lynagh wrote:

> Hi all,
>
> This got a warm reception when I mentioned it in
>     http://www.haskell.org/pipermail/haskell-cafe/2007-June/027557.html
> so I'm formally proposing it now. It's trac #1902:
>     http://hackage.haskell.org/trac/ghc/ticket/1902
>
> Note that this is a divergence from Haskell 98 (but the libraries
> already have a handful of small divergences, and Haskell' is just around
> the corner...).
>
> In my opinion, (^) has the wrong type. Just as we have, for example,
>     (!!)         ::                 [a] -> Int -> a
>     genericIndex :: (Integral b) => [a] -> b   -> a
> we should also have
>     (^)          :: (Num a)             => a -> Int -> a
>     genericPower :: (Num a, Integral b) => a -> b   -> a
> (or some other function name). The same goes for (^^) (genericPower').

I vote for this proposal.


In order not to overuse the prime, I propose genericFractionalPower or
genericFracPower for (^^).


In my code, the exponent is most oftenly 2.


More information about the Libraries mailing list