> Does Haskell specify how div and mod should behave when
> given one or both arguments negative?
> 
> Eg, in hugs we get:
> 
> div   1    3  = 0
> div (-1)   3  = -1
> div   1  (-3) = -1
> div (-1) (-3) = 0
> 
> and so on.

We usually describe div as the version of division that "truncates
towards negative infinity".  What this actually means is that when there
are two solutions to

        a `divMod` b = (d,m)  
      such that  d*b + m == a 
      and        abs m < b

div picks the one where d is the closest to minus infinity, and quot
picks the one where d is closer to zero.

  eg.  (-1) `divMod` 3  = (-1, 2)   or  (0, -1)

divMod gives you (-1,2), whereas quotRem gives you (0,-1).

Hope this helps.

Cheers,
        SImon
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to