From: "David Allsopp" <dra-news@metastack.com>
To: <caml-list@inria.fr>
Subject: RE: [Caml-list] break and continue for OCaml
Date: Thu, 10 Apr 2008 16:12:49 +0200 [thread overview]
Message-ID: <003e01c89b15$001f9f30$017ca8c0@countertenor> (raw)
In-Reply-To: <47FDBDA1.8080901@lri.fr>
Is there therefore any reasonable performance gain over implementing
break/continue as a camlp4 extension rather than as a compiler patch?
David
Jean-Christophe Filliâtre wrote:
> Sanghyeon Seo wrote:
> > I have the first cut of patch to implement break and continue inside
> > for and while loops for OCaml.
> >
> > http://sparcs.kaist.ac.kr/~tinuviel/devel/ocaml/
> >
> > Patch is against OCaml 3.10.2. All the meat is in bytecomp/bytegen.ml.
> > Currently bytecode only. I am working on natvie code and error
> > handling when break is used outside loop etc but I thought "releasing
> > early" could be useful.
> >
> > What do you think?
>
> A comment on typing break and continue: If I read your patch correctly,
> you're giving type "unit" to both expressions "break" and "continue". I
> was rather expecting type 'a instead, as for "raise exn". It could be
> useful in situations like this
>
> while ... do
> let x = ... [if ... then break else ...] ... in
> ...
> done
>
> Said otherwise, break and continue can be simply encoded with exceptions
>
> try
> while ... do
> try
> .... loop body where break is raise Break ...
> .... and continue is raise Continue ...
> with Continue ->
> ()
> done
> with Break ->
> ()
>
> and thus should be typed the same way.
>
> --
> Jean-Christophe Filliâtre
> http://www.lri.fr/~filliatr/
next prev parent reply other threads:[~2008-04-10 14:25 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-10 1:59 Sanghyeon Seo
2008-04-10 7:09 ` [Caml-list] " Luc Maranget
2008-04-10 7:11 ` Jean-Christophe Filliâtre
2008-04-10 14:12 ` David Allsopp [this message]
2008-04-10 14:41 ` Richard Jones
2008-04-10 13:39 ` Richard Jones
2008-04-10 14:05 ` Martin Jambon
2008-04-10 14:19 ` Richard Jones
2008-04-10 14:24 ` Michael Wohlwend
2008-04-10 14:35 ` Martin Jambon
2008-04-10 14:38 ` Michael Wohlwend
2008-04-10 22:23 ` Florian Weimer
2008-04-10 20:35 ` Eric Cooper
2008-04-11 0:14 ` Micha
2008-04-11 3:44 Andrew I. Schein
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='003e01c89b15$001f9f30$017ca8c0@countertenor' \
--to=dra-news@metastack.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