The modulo function in OCaml mod return results different when compared with the modulo operator in python.
OCaml:
# -1 mod 4
- : int = -1
Python:
>>> -1 % 4
3
Why are the result different?.
Is there any standard module function that operate as % in OCaml?.
Python is a bit different in its usage of the % operator, which really computes the modulo of two values, whereas other programming languages compute the remainder with the same operator. For example, the distinction is clear in Scheme:
(modulo -1 4)    ; modulo
=> 3
(remainder -1 4) ; remainder
=> -1
In Python:
-1 % 4           # modulo
=> 3
math.fmod(-1, 4) # remainder
=> -1
But in OCaml, there's only mod (which computes the integer remainder), according to this table and as stated in the documentation:
-1 mod 4 (* remainder *)
=> -1
Of course, you can implement your own modulo operation in terms of remainder, like this:
let modulo x y =
  let result = x mod y in
  if result >= 0 then result
  else result + y
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With