Re: Recursion, exception and continuations

Didier Remy (Didier.Remy@inria.fr)
Mon, 11 Mar 1996 14:42:06 +0100 (MET)

Message-Id: <199603111342.OAA16848@pauillac.inria.fr>
Subject: Re: Recursion, exception and continuations
To: Francis.Dupont@inria.fr (Francis Dupont)
Date: Mon, 11 Mar 1996 14:42:06 +0100 (MET)
In-Reply-To: <199603111145.MAA27609@givry.inria.fr> from "Francis Dupont" at Mar 11, 96 12:45:23 pm
From: Didier.Remy@inria.fr (Didier Remy)

> It doesn't matter if the continuation is used in a program or in
> *one* toplevel statement, but there is a problem if a toplevel statement
> produces a continuation used in an other toplevel statement: the type
> system can be broken or the extend of the continuation must be
> constrained... See SML of New Jersey for correction attempts!

These problems have been studied in [1]. The conclusion was that
typechecking continuations is not a problem, even in the presence of a
toplevel, provided the right approach is taken.

We also found very few good example of uses of continuations, aside the
implementation of corountines. But this application of continuations is now
subsumed by threads in caml special light.

> PS: some continuation constructs have been proposed with different
> scope, extend and typing rules and without the toplevel problem,
> but there are not the Scheme callcc operator. Some of them can be
> expansed in a CPS program of rather the same size (read papers
> by Olivier Danvy & all).

The zoology of continuation operators is also studied in [1] in the
presence of a strongly typed system.

-Didier Remy.

[1] ftp.inria.fr:INRIA/Projects/cristal/Didier.Remy/prompt.dvi.Z

Carl A. Gunter, Didier Rémy, Jon G. Riecke. "A Generalization of
Exceptions and Control in ML". LFP'95, January 1995.

We add functional continuations and prompts to a language with an
ML-style type system. The operators significantly extend and
simplify the control operators in SML/NJ, and can be themselves
used to implement (simple) exceptions. We prove that well-typed
terms never produce run-time type errors and give a module for
implementing them in the latest version of SML/NJ.
(The code of the appendix is avalaible <A HREF="ftp://ftp.inria.fr/INRIA/Projects/cristal/Didier.Remy/prompt.sml">here</A>)