caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Berke Durak <berke@altern.org>
To: Jeff Henrikson <jehenrik@yahoo.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] C style for loop
Date: Thu, 11 Oct 2001 14:47:33 +0200	[thread overview]
Message-ID: <20011011144733.A3985@gogol.zorgol> (raw)
In-Reply-To: <004001c15218$29c42e20$0b01a8c0@mit.edu>; from jehenrik@yahoo.com on Thu, Oct 11, 2001 at 01:47:07AM -0400

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


  parent reply	other threads:[~2001-10-11 12:52 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-11  5:47 Jeff Henrikson
2001-10-11  8:58 ` Daniel de Rauglaudre
2001-10-11 18:05   ` [Caml-list] Thanks: " Jeff Henrikson
2001-10-11 12:47 ` Berke Durak [this message]
2001-10-11 13:11   ` [Caml-list] " Bruce Hoult
2001-10-11 13:34 Damien Doligez
2001-10-11 13:43 ` Bruce Hoult

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20011011144733.A3985@gogol.zorgol \
    --to=berke@altern.org \
    --cc=caml-list@inria.fr \
    --cc=jehenrik@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).