Polymorphic Type Assignment and CPS Conversion 1 Introduction

Polymorphic Type Assignment and CPS Conversion 1 Introduction

Polymorphic Typ e Assignment and CPS Conversion (To app ear: ACM SIGPLAN Workshop on Continuations, San Francisco, June 1992) y Rob ert Harp er Mark Lillibridge Carnegie Mellon University Pittsburgh, PA15213 April 10, 1992 Abstract Meyer and Wand established that the typ e of a term in the simply typ ed -calculus may b e related in a straightforward manner to the typ e of its call-by-valu e CPS transform. This typing prop ertymaybe extended to Scheme-likecontinuation-passi ng primitives, from which the soundness of these extensions follows. We study the extension of these results to the Damas-Milner p olymorphic typ e assignment system under b oth the call-by-value and call-by-name interpretations. We obtain CPS transforms for the call-by-value interpretation, provided that the p olymorphi c let is restricted to values, and for the call-by-name interpretation with no restrictions. We prove that there is no call-by-value CPS transform for the full Damas-Milner language that validates the Meyer-Wand typing prop erty and is equivalentto the standard call-by-value transform up to -conversion. 1 Intro duction In their study of the relationship b etween direct and continuation semantics for the simply typ ed -calculus ! ! ( ), Meyer and Wand note that the typ e of a term in may b e related in a simple and natural wayto the typ e of its call-by-value continuation passing style (CPS) transform [8]. This result may b e extended ! to the calculus that results from extending with Scheme-like continuation-passing primitives callcc and ! ! throw ( + cont)[1, 3]. Since under a call-by-value op erational semantics is \typ e safe" in the sense of Milner [9, 2], and since the call-by-value CPS transform faithfully mimics the call-by-value semantics [12], ! + cont under a call-by-value op erational semantics is also typ e safe. it follows that In a subsequent study Duba, Harp er, and MacQueen studied the addition of callcc and throw to Stan- ! dard ML [10]. The extension of the Meyer-Wand transform to + cont establishes the soundness of the monomorphicfragment of the language, but the soundness of the p olymorphic language with continuation- passing primitives was left op en. It was subsequently proved by the authors [7] that the full p olymorphic language is unsound when extended with callcc and throw. The source of this discrepancy may b e traced to the interaction b etween the p olymorphic let construct and the typing rules for callcc. Several ad hoc metho ds for restricting the language to recover soundness have b een prop osed [6, 14]. In this pap er we undertake a systematic study of the interaction b etween continuations and p olymorphism by considering the typing prop erties of the CPS transform for b oth the call-by-value and call-by-name variants of the Damas-Milner language [2] and its extension with continuation-passing primitives. We obtain suitable extensions of the Meyer-Wand theorem for the call-by-value CPS transform, provided that the p olymorphic let is restricted to values, and for the call-by-name transform, under no restrictions. Finally,we This work was sp onsored by the Defense Advanced Research Pro jects Agency, CSTO, under the title \The Fox Pro ject: Advanced Development of Systems Software", ARPA Order No. 8313, issued by ESD/AVS under Contract No. F19628{91{C{ 0168. y Supp orted by a National Science Foundation Graduate Fellowship. 1 prove that there is no call-by-value CPS transform for the full Damas-Milner language that b oth satis es the Meyer-Wand typing prop erty and is equivalent to the usual transform up to -conversion. In particular, the standard call-by-value CPS transform fails to preservetypability. 2 Untyp ed Terms The language of untyp ed terms is given by the following grammar: e ::= x j x:e j e e j let x be e in e j callcc j throw 1 2 1 2 Here x ranges over a countably in nite set of variables. We include the let construct as a primitive b ecause it is needed in the discussion of p olymorphic typ e assignment. callcc and throw are continuation-passing primitives whose de nitions are derived from analogous constructs in Scheme [1] and Standard ML of New Jersey [3]. We consider two CPS transforms for untyp ed terms, corresp onding to the call-by-value and call-by-name op erational semantics [12]. Each CPS transform consists of a transformation jj for untyp ed terms and a transformation jjjj for untyp ed values. Exactly what is considered a value dep ends on which op erational 1 semantics is b eing used. Under call-by-value, variables, -abstractions, and constants are considered values. Under call-by-name, only -abstractions and constants are considered values. We shall use v as a meta- variable for call-by-value values and w as a meta-variable for call-by-name values. De nition 2.1 (Call-by-Value CPS Transform) jv j = k :k jjv jj cbv cbv je e j = k :je j (x :je j (x :x x k )) 1 2 cbv 1 cbv 1 2 cbv 2 1 2 jlet x be e in e j = k :je j (x:je j k ) 1 2 cbv 1 cbv 2 cbv jjxjj = x cbv jjx:ejj = x:jej cbv cbv jjcallccjj = f :k :f k k cbv jjthrowjj = c:k :k (x:l :c x) cbv Lemma 2.2 0 0 1. jj [v=x]v jj =[jjv jj =x ] jjv jj . cbv cbv cbv 2. j [v=x]e j =[jjv jj =x ] jej . cbv cbv cbv 0 We shall also haveneedofavariant call-by-value CPS transform (cbv ) de ned on untyp ed terms sat- isfying the restriction that all let expressions are of the form let x be v in e. I.e., the let-b ound expression is required to b e a (call-by-value) value. Because of this restriction, a simpler rule can b e given for the let case: 0 0 0 jlet x be v in ej = k :let x be jjv jj in (jej k ) cbv cbv cbv This simpler rule for let expressions is the only di erence b etween the two transforms. 0 Lemma 2.3 Let v and v be values obeying the restriction on let expressions and e be a term obeying the restriction on let expressions. Then 0 0 0 0 0 . =x ] jjv jj =[jjv jj 1. jj [v=x]v jj cbv cbv cbv 0 0 0 2. j [v=x]e j =[jjv jj =x ] jej . cbv cbv cbv 1 Note that callcc and throw are considered to b e constants. 2 De nition 2.4 (Call-by-Name CPS Transform) jw j = k :k jjw jj cbn cbn jxj = x cbn je e j = k :je j (x :x je j k ) 1 2 cbn 1 cbn 1 1 2 cbn jlet x be e in e j = k :let x be je j in (je j k ) 1 2 cbn 1 cbn 2 cbn jjx:ejj = x:jej cbn cbn 0 0 jjcallccjj = f :k :f (f :f (l :l k ) k ) cbn 0 0 0 0 jjthrowjj = c:k :k (x:l :c (c :x (x :c x ))) cbn Lemma 2.5 1. jj [e=x]w jj =[jej =x ] jjw jj . cbn cbn cbn 0 0 2. j [e=x]e j =[jej =x ] je j . cbn cbn cbn The correctness of these transforms may either b e established by relating them to an indep endently- de ned op erational semantics (as in [12, 4]), or else taken as the de nition of call-by-value and call-by-name semantics. 3 Simple Typ e Assignment In this section we review Meyer and Wand's typing theorem for the call-by-value CPS transform for the ! simply-typ ed -calculus ( ), and present an analogous result for the call-by-name CPS transform. ! De nition3.1( Typ es and Contexts) ty pes ::= b j ! 1 2 contexts ::= j;x: Here b ranges overacountable set of base typ es. We assume that among the base typ es there is a distinguished typ e , which will b e used in what follows to represent the \answer" typ e of a CPS transform. ! De nition3.2( Typing Rules) .x:(x) (var) ;x: .e : 1 2 (x 62 dom()) (abs) . x:e : ! 1 2 .e : ! .e : 1 2 2 2 (app) .e e : 1 2 .e : ;x: .e : 1 1 1 2 (mono-let) . let x be e in e : 1 2 ! The typ e system + cont is de ned by adding the typ e expression cont and the following typing rules for the continuation-passing primitives: . callcc :( cont ! ) ! (callcc) 0 . throw : cont ! ! (throw) 3 ! De nition 3.3 (Call-by-Value Typ e Transform for ) j j = (jj jj ! ) ! cbv cbv jjbjj = b cbv jj ! jj = jj jj !j j 1 2 cbv 1 cbv 2 cbv The typ e transform is extended to contexts by de ning jjjj (x)= jj(x)jj for each x 2 dom(). cbv cbv Theorem 3.4 (Meyer-Wand) ! ! 1. If ` .v : , then `jjjj . jjv jj : jj jj . cbv cbv cbv ! ! 2. If ` .e : , then `jjjj . jej : j j . cbv cbv cbv ! The call-by-value typ e transform is extended to + cont by de ning jj cont jj = jj jj ! .Itis cbv cbv ! straightforward to verify that Theorem 3.4 extends to + cont in this way[3].

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us