Browse thread
[Caml-list] Reason why 'for' doesn't work across floats?
-
Richard Jones
-
Michal Moskal
- Richard Jones
- Jacques Carette
-
Michal Moskal
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Jacques Carette <carette@m...> |
| Subject: | Re: [Caml-list] Reason why 'for' doesn't work across floats? |
Michal Moskal <malekith@pld-linux.org> 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 analysis... Jacques ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners