Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Integer arithmetic: mod
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: John Max Skaller <skaller@m...>
Subject: Re: [Caml-list] Integer arithmetic: mod
Kai Kaminski wrote:
> Hi,
> I have a question regarding the 'mod' operator in OCaml. While playing
> around with the toplevel, I found that
> -1 mod 10 = -1 instead of -1 mod 10 = 9.

> The reason is that whenever such a behaviour is platform-dependent, you
> can't use it at all, as long as you want to have your programs portable.

	Yes you can: it works for non-negative arguments.
And you can always roll your own function that works as you desire
for negative ones:

	let mymod x y = 
		if ((x mod y) as r) < 0 
		then r + y 
		else r

which works for negative x provided the result is in the range

	 y .. -1

This way, YOU choose whether you want a deterministic result
for non-negative values (use mod, its fast), or are willing
to pay extra for determinism for negative values.

But I agree with you anyhow. :-)

John (Max) Skaller, 
10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850
New generation programming language Felix
Literate Programming tool Interscript
Bug reports:  FAQ:
To unsubscribe, mail  Archives: