Results 11 
17 of
17
Typability is undecidable for F+eta
, 1995
"... System F is the wellknown polymorphicallytypedcalculus with universal quanti ers (\8"). F+ is System F extended with the eta rule, which says that if term M can be given type and Mreduces to N, then N can also be given the type. Adding the eta rule to System F is equivalent to adding the subsump ..."
Abstract

Cited by 9 (6 self)
 Add to MetaCart
System F is the wellknown polymorphicallytypedcalculus with universal quanti ers (\8"). F+ is System F extended with the eta rule, which says that if term M can be given type and Mreduces to N, then N can also be given the type. Adding the eta rule to System F is equivalent to adding the subsumption rule using the subtyping (\containment") relation that Mitchell de ned and axiomatized [Mit88]. The subsumption rule says that if M can be given type and is a subtype of type,thenMcan be given type. Mitchell's subtyping relation involves no extensions to the syntaxoftypes, i.e., no bounded polymorphism and no supertype of all types, and is thus unrelated to the system F (\Fsub"). Typability for F+ is the problem of determining for any termMwhether there is any type that can be given to it using the type inference rules of F+. Typability has been proven undecidable for System F [Wel94] (without the eta rule), but the decidability oftypability has been an open problem for F+. Mitchell's subtyping relation has recently been proven undecidable [TU95, Wel95b], implying the undecidability of\type checking " for F+. This paper reduces the problem of subtyping to the problem of typability for F+,thus proving the undecidability oftypability. The proof methods are similar in outline to those used to prove the undecidability oftypability for System F, but the ne details di er greatly. 1
Imperative Lambda Calculus Revisited
, 1997
"... Imperative Lambda Calculus is a type system designed to combine functional and imperative programming features in an orthogonal fashion without compromising the algebraic properties of functions. It has been noted that the original system is too restrictive and lacks the subject reduction property. ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Imperative Lambda Calculus is a type system designed to combine functional and imperative programming features in an orthogonal fashion without compromising the algebraic properties of functions. It has been noted that the original system is too restrictive and lacks the subject reduction property. We define a revised type system that solves these problems using ideas from Reynolds's Syntactic Control of Interference. We also extend it to handle HindleyMilner style polymorphism and devise type reconstruction algorithms. A sophisticated constraint language is designed to formulate principal types for terms. 1 Introduction The recent research in programming languages has greatly clarified the interaction between imperative and functional programming. The conventional notion that functional programming and imperative statemanipulation are in conflict has been dispelled. Several programming languages have now been designed which combine functions and assignments without destroying algeb...
A Fresh Look at Parametric Polymorphism: Covariant Types
 Nineteenth Australasian Computer Science Conference Proceedings
, 1996
"... The covariant type system is rich enough to represent polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parametric functions. Their free type variab ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The covariant type system is rich enough to represent polymorphism on inductive types, such as lists and trees, and yet is simple enough to have a settheoretic semantics. Its chief novelty is to replace function types by transformation types, which denote parametric functions. Their free type variables are all in positive positions, and so can be modelled by covariant functors. Similarly, terms denote natural transformations. There is a translation from the covariant type system to system F which preserves nontrivial reductions. Consequently, covariant reduction is strongly normalising and confluent. Keywords types polymorphism parametric covariance transformations. 1 Introduction The pros and cons of typing programs are too well known to require detailed elaboration here. In brief, static typechecking by the compiler catches many programmer errors, and reduces, or eliminates (if the type system is strong) runtime type errors, which are expensive to handle. Also, typing supports a...
A Calculus for Boxing Analysis of Polymorphically Typed Languages
, 1996
"... An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing ope ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing operations we axiomatize equationally the set of all explicitly boxed versions, called completions , of a given source program. In a twostage process we give some of the equations a rewriting interpretation that captures eliminating boxing/unboxing operations without relying on a specific implementation or even the semantics of the underlying language. The resulting reduction systems operate on equivalence classes of completions defined by the remaining equations E, which can be understood as moving boxing/unboxing operations along data flow paths in the source program. We call a completion e opt formally optimal if every other completion for the same program (and at the same representation ty...
A. M. Pitts, 19979
"... types and types for objects Existentially quantified types, 9 ff (), are dual to the 8types we considered in the polymorphic lambda calculus (Section 5). Roughly speaking the values of such a 77 78 7 FURTHER TOPICS type are pairs ( 0 ; M) where 0 is a type and M is a value of type [ 0 =f ..."
Abstract
 Add to MetaCart
types and types for objects Existentially quantified types, 9 ff (), are dual to the 8types we considered in the polymorphic lambda calculus (Section 5). Roughly speaking the values of such a 77 78 7 FURTHER TOPICS type are pairs ( 0 ; M) where 0 is a type and M is a value of type [ 0 =ff]. 1 Such 9types are like ML's notion of signature: they classify implementations of abstract data types: see (Mitchell and Plotkin 1988). It is another indication of the expressive power of polymorphic lambda calculus that 9types can in fact be encoded in PLC via the formula 9 ff () def = 8 ff 0 (8 ff ( ! ff 0 ) ! ff 0 ) (where ff 0 = 2 ftv ()). Existential types have also proved useful in formulating type systems for objectoriented languages: see (Pierce and Turner 1994) for example. Such languages inevitably involve consideration of a subtype relation between types, !: 0 . This relation is often motivated by the simple notion of a set (of values of some type) being a...
Functions, Frames, and Interactions  completing a λcalculusbased purely functional language with respect to programminginthelarge and interactions with runtime environments
, 1998
"... The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped calculus, i.e., program execution is defined as program transformation according to a fixed ..."
Abstract
 Add to MetaCart
The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped calculus, i.e., program execution is defined as program transformation according to a fixed set of reduction rules including fireduction. Consistently, the implementation comprises an interactive reduction system which is integrated with a syntaxoriented editor: any subexpression or program result can be submitted for (stepwise) reduction. There is no distinguished main program, no `global' environment and no explicit static part of the language  in particular, there is no static type system. It is therefore not clear how to add one of the known solutions for input/output or modular programming to such a programming environment. Furthermore, simply adding features to the language would lead to a complex language design with weakly integrated parts, thus losing much of the appe...