Daniel Fischer wrote:
> Am Montag 05 Oktober 2009 16:29:02 schrieb Job Vranish:
>> In what way is it not a number?
> 
> If there's a natural[1] implementation of fromInteger, good.
> If there isn't, *don't provide one*.
> fromInteger _ = error "Not sensible" is better than doing something
> strange.
> 
> [1] In the case of residue class rings, you may choose between restricting
> [the range of
> legitimate arguments for fromInteger or doing a modulo operation on the
> argument, both ways are natural and meet expectations sufficiently well.

More generally, any ring with multiplicative unit (let's call it 'one') will
do. If there were 'one' and 'zero' methods in class Num, we could even give
a default implementation (however inefficient) as

  fromInteger n | n < 0 = negate (fromInteger n)
  fromInteger n | n > 0 = one + fromInteger (n-1)
  fromInteger _ = zero

In fact, I'd argue that the existence of fromInteger in class Num "morally"
implies a unit for multiplication (namely 'fromInteger 1'), otherwise
fromInteger isn't even a ring morphism.

Cheers
Ben

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to