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] Reason why 'for' doesn't work across floats?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2004-01-08 (15:47)
From: Jacques Carette <carette@m...>
Subject: Re: [Caml-list] Reason why 'for' doesn't work across floats?
Michal Moskal <> wrote:
> On Thu, Jan 08, 2004 at 02:11:52PM +0000, Richard Jones wrote:
> > Is there a particular reason why I shouldn't be allowed to step over
> > floats?
> > 
> > # for r = 0. to 9. step 1. do printf "%f" r done;;
> >           --
> > This expression has type float but is here used with type int
> let f a b = for x = a to b do () done
> What type would f have (int -> int -> int or float -> float -> float)?
> One would need "for.", which doesn't seem appealing.

Another reason is that
for r = 0. to 9. step 0.001 do printf "%f" r done;;
will not necessary have the expected number of iterations, since 9. will not be 'hit' exactly (numerical round-off 
guarantees that).  For some loops, the number of times around would change depending on whether all the numbers 
involved have exact base 2 representations or not.  Very ugly.

After suffering through painful debugging sesions on programs in languages that allow the above type of loops, I am 
quite glad that Ocaml does not allow this, even if in this case it is because of typing rather than sound numerical 


To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: