Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>
To: Gerard Huet <Gerard.Huet@inria.fr>
Cc: Brian Rogoff <bpr@best.com>, caml-list@inria.fr
Subject: Re: Revised syntax question
Date: Wed, 27 Sep 2000 07:50:12 +0200	[thread overview]
Message-ID: <20000927075012.C5396@verdot.inria.fr> (raw)
In-Reply-To: <200009261500.e8QF0G520563@concorde.inria.fr>; from Gerard.Huet@inria.fr on Tue, Sep 26, 2000 at 04:58:33PM +0200

Hi,

On Tue, Sep 26, 2000 at 04:58:33PM +0200, Gerard Huet wrote:

> I hate this return, and actually I do not like this dangling e4.

I don't know what you have against the do...return construct, since we
are in a functional language and this kind of construction separates the
imperative part (do...return) which could (should) be typed "unit" and
the functional part (after the return). My opinion is that in "e1;e2;..;en"
the expression "en" has something different.

I don't agree with the idea that some control is passed from e1 to e2, then
e2 to e3. In sequence, we do "e1", then we forget it, we do e2, we forget it,
and nothing at all runs from e1 to e2.

And if your sequence is only composed of side effects, "en" included,
you can write (it's what I do):
    do e1;e2;..;en; return ()

which appears to me very logical. Just consider "return ()" as the
ending keyword.

   ---

But... but! I don't want to make a business with that. We can talk about
it, but I agree to change that into a completely symmetrical form like the
one you propose if we are numerous enough to accept that form. Besides, there
is the problem of the "let" inside sequences which my form does not allow.

(Explanation: when you write in OCaml syntax:
      e1; e2; let x1 = f1 in e3; e4
actually, this sequence has 3 (not 4) expressions:
      e1; e2; (let x1 = f1 in e3; e4)
since the binding x1 = f1 runs up to e4; in my syntax you have to write:
      do e1; e2; return let x1 = f1 in do e3; return e4
and I recognize it is ugly.)

   ---

What about Michel Mauny's proposition for the sequence:
    do { e1; e2; ... ; en }

The braces remind C language, what is logical, since it is imperative.
The "let" up to the end of the sequence could be represented by "let
binding ;", i.e. ended by just a semicolon instead of "in":
    do { e1; e2; let x1 = f1; e3; e4 }

what would remind the "x1 = f1;" of C.

The while and for constructs could be changed into:

     while e do { e1; ....; en }
     for x = e1 to e2 do { e1; ...; en }

with the same ability to write this "let x = y;"

I can implement that if there are several persons who like it,
because, for the moment, I am used to "do...return ()" in my code, I
wrote a lot of code with it and I don't want to change it if three
days after, people tells me it is uglier.

I can also change my syntax tree to that form and accept
     <:expr< do { e1; ... ; en } >>
as sequence syntax tree.

I consider simple parentheses as not enough "sequence". When a
parenthesis is opened, if the expression is long, there is no way to
know whether it is a sequence or not. There is the same problem with
t-uples but generally, t-uples are shorter than sequences. I consider
that the language should clearly show sequences, even with a loss of
simplicity.

-- 
Daniel de RAUGLAUDRE
daniel.de_rauglaudre@inria.fr
http://cristal.inria.fr/~ddr/



  parent reply	other threads:[~2000-09-27  7:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-09-26 14:58 Gerard Huet
2000-09-26 17:15 ` Brian Rogoff
2000-09-27  5:50 ` Daniel de Rauglaudre [this message]
2000-09-27  9:29   ` Marcin 'Qrczak' Kowalczyk
2000-09-28  4:36   ` Brian Rogoff
2000-09-28 12:01     ` Daniel de Rauglaudre
  -- strict thread matches above, loose matches on Subject: below --
2000-09-25 16:34 Brian Rogoff

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=20000927075012.C5396@verdot.inria.fr \
    --to=daniel.de_rauglaudre@inria.fr \
    --cc=Gerard.Huet@inria.fr \
    --cc=bpr@best.com \
    --cc=caml-list@inria.fr \
    /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