Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] C style for loop
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Berke Durak <berke@a...>
Subject: Re: [Caml-list] C style for loop
On Thu, Oct 11, 2001 at 01:47:07AM -0400, Jeff Henrikson wrote:

> Okay, so maybe I should be more specific about what I want in a
> "C-style for loop."  Its readablity merits are hopefully self
> evident.  Well, unless you're a compulsive CPS addict who wishes
> even his grocery list could be written to tail recurse. . .

[...]

Do you really pretend that ``C-style for loops'' have ``self-evident
readability merits'' ?! My opinion is that ```C-style'' loop syntax
IS unreadable, ununderstandable and unprovable. How many people using
C know the _exact_ semantics of :

	for(exp1;expr2;expr3){expr4}

I never manage to remember if expr3 is evaluated if expr2 is always
zero. However with

	for i = 0 to 33 do
		f i
	done

the ONLY little point about which you MIGHT hesitate is : does f 33
get called or does the loop stop at 32 ? So I'd rather write

	for i = 0 to m - 1 do
		for j = 0 to n - 1 do
			f i j (i * n + j)
		done
	done

and let the compiler sort it out. Further, with C syntax, a for
loop is not guaranteed to terminate, even if its body is guaranteed
to. With Caml-syntax, if your program hangs, you know it's not because
of a for-loop.

Die-hard C-style ``for'' syntax fanatics :) can define functionals to
do the same thing and pressure the Caml team to improve their
compilers if they find it's too slow. If you're sure nobody will ever
read your code, you can hack a Camlp4 syntax for it, but I don't think
it's worth it.

I'd like to mention that Scheme has some kind of generalized, totally
awful and superfluous loop-construction (I think it's called ``do'' or
``while'', don't remember, these were old, weakly typed times). We
don't want such a thing, do we ?
--
Berke
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr