6 citations found. Retrieving documents...
R. Harper and M. Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Proc. 20th Symp. Principles of Programming Languages.. - Polymorphism By Name   (Correct)

.... it has long been known that the naive polymorphic typing for references is unsound; strong typing restrictions must be put on polymorphic references to ensure soundness [19] Recently, it has been shown that the natural polymorphic typing for continuations [4] is unsound for similar reasons [8, 9]. In this paper, we show that these diculties are not inherent to the polymorphic typing of references and continuations, but speci c to the ML semantics for generalization and specialization (the two constructs that introduce polymorphism) when generalization and specialization are given ....

.... are, for all types and : cont ) for callcc cont for throw These typings are sound in a simply typed language [4] It had long been believed that they were also sound in the polymorphic type system of ML, until Harper and Lillibridge came up with a counterexample [8]: let later = in print(first(later) Hello world ) second(later) x:x 1) Everything typechecks with the typings above: later is given type 8 ; and therefore can be used with instantiated to string in the rst part of the sequence and with instantiated to int ....

R. Harper and M. Lillibridge. ML with callcc is unsound. Message sent to the sml mailing list, July 1991.


Return Types for Functional Continuations - Gunter, Rémy, Riecke (1998)   (Correct)

.... i.e. an expression that causes no immediate subcomputation [13, 25] The type system becomes unsound if the syntax of let is left unrestricted, this phenomenon rst pointed out by Tofte [23, 24] in the context of typing references in ML has been well documented in the case of continuations [8, 11, 26]) For better readability we use the syntactic sugar (let x = a 1 in a 2 ) for ( x: a 2 ) a 1 ) for the monomorphic let. Some familiar facts follow immediately from the form of the type system, e.g. one may easily construct an algorithm (based on uni cation) that derives a principal type, as in ....

....) Thus, A 0 ( x: a) y: E p [y] follows. Theorem 8 (Subject Reduction) If a 0 =P 0 a 1 =P 1 , then a 0 =P 0 a 1 =P 1 . Proof: A simple combination of Lemmas 5 and 7. Note that Theorem 8 does not hold without the value only restriction (or other restrictions on polymorphic let) see [8, 11, 26] for examples. Theorem 9 (Value Halting) Suppose A is a prompt assignment with prompts P . If A a : and a=P cannot be reduced, then a is either a value or a term of the form E p [cupto p as x in a 0 ] Proof: The proof is by induction on the size of a. The cases when a = new prompt, p, ....

R. Harper and M. Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.


Return Types for Functional Continuations - Gunter, Rémy, Riecke   (Correct)

.... i.e. an expression that causes no immediate subcomputation [13, 25] The type system becomes unsound if the syntax of let is left unrestricted, this phenomenon first pointed out by Tofte [23, 24] in the context of typing references in ML has been well documented in the case of continuations [8, 11, 26]) For better readability we use the syntactic sugar (let x = a 1 in a 2 ) for ( lx:a 2 ) a 1 ) for the monomorphic let. Some familiar facts follow immediately from the form of the type system, e.g. one may easily construct an algorithm (based on unification) that derives a principal type, as in ....

....A 0 (lx:a) ly:E p [y] t follows. Theorem 8 (Subject Reduction) If a 0 =P 0 Gamma a 1 =P 1 , then a 0 =P 0 ae a 1 =P 1 . Proof: A simple combination of Lemmas 5 and 7. Note that Theorem 8 does not hold without the value only restriction (or other restrictions on polymorphic let) see [8, 11, 26] for examples. Theorem 9 (Value Halting) Suppose A is a prompt assignment with prompts P. If A a : t and a=P cannot be reduced, then a is either a value or a term of the form E p [cupto p as x in a 0 ] Proof: The proof is by induction on the size of a. The cases when a = new prompt, p, ....

R. Harper and M. Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.


A Generalization of Exceptions and Control in ML-like.. - Gunter, Rémy.. (1995)   (15 citations)  (Correct)

....strong soundness fails, i.e. the type obtained from evaluating an expression may not be the type assigned statically. The absence of run time type errors, weak soundness, does hold. We can see the issue clearly in the SML NJ interactive loop. Let 1 Note that the type variable is imperative [7]; in SML NJ this is indicated by the number ( weakness ) in the variable 1a. For the moment, the reader need not worry about imperative variables. val c = callcc (fn k= fn x= throw k (fn y= x 4) val c = fn : int int = fun g ( 5 (c 2) val g = fn : unit bool The value of g ....

....value, i.e. an expression that causes no immediate subcomputation. The type system becomes unsound if the syntax of let is left unrestricted. This phenomenon first pointed out by Tofte [18, 19] in the context of typing references in ML has been welldocumented in the case of continuations (cf. [7, 10, 21]) The type system adopts Wright s solution [20] of restricting the form of let to value only polymorphism rather than adding imperative type variables as the SML definition does. For better readability we use the syntactic sugar (let x = a1 in a2 ) for ( x: a2 ) a1) for the monomorphic let. ....

[Article contains additional citation context not shown here]

Robert Harper and Mark Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.


A Generalization of Exceptions and Control in ML-like.. - Gunter, Rémy.. (1995)   (15 citations)  (Correct)

.... loop, there is the argument type int of the continuation, which must be the same as that expected by the context in which it was reified; there is the type int of the context in which the throw is invoked; and there is the type bool of the value 1 Note that the type variable is imperative [8]; in SML NJ this is indicated by the number ( weakness ) in the variable 1a. For the moment, the reader need not worry about imperative variables. returned to the prompt after a value is throw n to the reified continuation. The third type is not directly represented in the types for callcc and ....

.... ( x: a) v) P Gamma red a[v=x] P letval x = v in a=P Gamma red a[v=x] P (new prompt ( P Gamma red p=fpg [ P p 62 P set p in v=P Gamma red v=P set p in Ep [cupto p as x in a] P Gamma red (x: a) y: Ep [y] P Context reductions a0=P0 Gamma red a1=P1 E[a0 ] P0 Gamma E[a1 ] P1 [8, 12, 28]) The type system adopts Wright s proposal [27] which was well known to Tofte) of restricting the form of let to value only polymorphism rather than adding imperative type variables as the SML definition does. For better readability we use the syntactic sugar (let x = a1 in a2) for ( x: a2 ) ....

[Article contains additional citation context not shown here]

Robert Harper and Mark Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.


Return Types for Functional Continuations - Carl Gunter University   (Correct)

No context found.

R. Harper and M. Lillibridge. ML with callcc is unsound, July 1991. Message sent to the "sml" mailing list.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC