caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: Michel Levy <Michel.Levy@imag.fr>, caml-list@inria.fr
Subject: Re: pourquoi y-a-t-il des exceptions?
Date: Fri, 17 Nov 2000 18:17:44 +0100	[thread overview]
Message-ID: <20001117181744.49309@pauillac.inria.fr> (raw)
In-Reply-To: <3A1419FD.CE44DEA4@imag.fr>; from Michel Levy on Thu, Nov 16, 2000 at 06:31:41PM +0100

[English summary: 1- exception declarations are generative, so there
is a "global state" for exceptions already declared; 2- if "raise"
could throw any value as an exception, there would be no way to match
on the exception just caught in the try ... with ... construct.]

> Je me livre (pour le compte de mes étudiants) à une introspection de
> Caml, en essayant d'introduire les exceptions dans le langage
> mini-Caml du livre "Le langage Caml" de Pierre Weiss et Xavier Leroy.
> Pour faire bien les choses, j'ai commencé par lire la définition de
> Standart ML et je n'ai pas compris les règles de liaisons des 
> eceptions (règle 130). Pourquoi dans cette définition un état d'un
> programme doit-il comporter non seulement l'état de la mémoire
> mais aussi les noms des exceptions ?

Je n'ai pas la Definition sous les yeux, mais je crois que c'est pour
respecter le comportement génératif des déclarations d'exceptions.
C'est-à-dire, si le programme évalue deux fois la déclaration
"exception E", deux exceptions différentes de nom "E" sont créées.
(Cela peut se produire avec des foncteurs, ou bien avec "let exception
... in" en SML, ou bien avec "let module ... in" en OCaml.)

Pour rendre compte de cela dans la sémantique formelle, on peut utiliser
une espèce de "store" (état mémoire global) qui garde trace des exceptions
déjà déclarées.  Je pense que c'est ce que qui est fait dans The
Definition of SML.

> Et d'ailleurs pourquoi y-a-t-il le type exception, ne pourrait-on pas
> appliquer "raise" à n'importe quelle valeur qui deviendrait une
> exception déclanchée (cf règle 107 de la définition de Standart ML) ?

Cela ne poserait pas de problème au niveau du "raise", mais cela
poserait problème pour typer le "try...with..."  ("handle" en SML).
En effet, la valeur de l'exception rattrapée serait alors d'un type
quelconque, inconnu statiquement, ce qui empêcherait d'en faire quoi
que ce soit dans la partie "with" du "try...with...", en particulier
de la filtrer.

- Xavier Leroy



  reply	other threads:[~2000-11-19 14:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-16 17:31 Michel Levy
2000-11-17 17:17 ` Xavier Leroy [this message]
2000-11-20  8:06   ` Francois Pottier

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=20001117181744.49309@pauillac.inria.fr \
    --to=xavier.leroy@inria.fr \
    --cc=Michel.Levy@imag.fr \
    --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;
as well as URLs for NNTP newsgroup(s).