Results 1 
8 of
8
Practical type inference for arbitraryrank types
 Journal of Functional Programming
, 2005
"... Note: This document accompanies the paper “Practical type inference for arbitraryrank types ” [6]. Prior reading of the main paper is required. 1 Contents ..."
Abstract

Cited by 91 (23 self)
 Add to MetaCart
Note: This document accompanies the paper “Practical type inference for arbitraryrank types ” [6]. Prior reading of the main paper is required. 1 Contents
TypeBased Analysis of Uncaught Exceptions
, 1998
"... This paper presents a program analysis to estimate uncaught exceptions in ML programs. This analysis relies on unificationbased type inference in a nonstandard type system, using rows to approximate both the flow of escaping exceptions (a la effect systems) and the flow of result values (a la cont ..."
Abstract

Cited by 62 (2 self)
 Add to MetaCart
This paper presents a program analysis to estimate uncaught exceptions in ML programs. This analysis relies on unificationbased type inference in a nonstandard type system, using rows to approximate both the flow of escaping exceptions (a la effect systems) and the flow of result values (a la controlflow analyses). The resulting analysis is efficient and precise; in particular, arguments carried by exceptions are accurately handled.
Program Representation Size in an Intermediate Language with Intersection and Union Types
 In Proceedings of the Third Workshop on Types in Compilation (TIC 2000
, 2000
"... The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and ow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union ..."
Abstract

Cited by 9 (7 self)
 Add to MetaCart
The CIL compiler for core Standard ML compiles whole programs using a novel typed intermediate language (TIL) with intersection and union types and ow labels on both terms and types. The CIL term representation duplicates portions of the program where intersection types are introduced and union types are eliminated. This duplication makes it easier to represent type information and to introduce customized data representations. However, duplication incurs compiletime space costs that are potentially much greater than are incurred in TILs employing typelevel abstraction or quanti cation. In this paper, we present empirical data on the compiletime space costs of using CIL as an intermediate language. The data shows that these costs can be made tractable by using suciently negrained ow analyses together with standard hashconsing techniques. The data also suggests that nonduplicating formulations of intersection (and union) types would not achieve signi cantly better space complexity.
Polar Type Inference with Intersection Types and ω
, 2002
"... We present a type system featuring intersection type and !, a type constant which is assigned to unused terms. We exploit and extend the technology of expansion variable from the recently developed System I, with which we believe our system shares many interesting properties, such as strong normaliz ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
We present a type system featuring intersection type and !, a type constant which is assigned to unused terms. We exploit and extend the technology of expansion variable from the recently developed System I, with which we believe our system shares many interesting properties, such as strong normalization, principal typings, and compositional analysis. Our presentation emphasizes a polarity discipline and shows its benefits. We syntactically distinguish positive and negative types, and give them different interpretations. We take the point of view that the interpretation of a type is intrinsic to it, and should not change implicitly when it appears at the opposite polarity. Our system is the result of a process which started with an extension of Trevor Jim's Polar Type System.
Space Issues in Compiling with Intersection and Union Types
, 2000
"... The CIL compiler for core Standard ML compiles whole programs using the CIL typed intermediate language with ow labels and intersection and union types. Flow labels embed flow information in the types and intersection and union types support precise polyvariant type and flow information, without the ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
The CIL compiler for core Standard ML compiles whole programs using the CIL typed intermediate language with ow labels and intersection and union types. Flow labels embed flow information in the types and intersection and union types support precise polyvariant type and flow information, without the use of typelevel abstraction or quantification. Compiletime representations of CIL types and terms are potentially large compared to those for similar types and terms in systems based on quantified types. The listingbased nature of intersection and union types, together with flow label annotations on types, contribute to the size of CIL types. The CIL term representation duplicates portions of the program where intersection types are introduced and union types are eliminated. This duplication makes it easier to represent type information and to introduce multiple representation conventions, but incurs a compiletime space cost. This paper presents empirical data on the compiletime space cos...
Programming Examples Needing Polymorphic Recursion
 IN IN PROCEEDINGS 3RD INTERNATIONAL WORKSHOP INTERSECTION TYPES AND RELATED SYSTEMS (ITRS 2004
, 2004
"... Inferring types for polymorphic recursive function definitions (abbreviated to polymorphic recursion) is a recurring topic on the mailing lists of popular typed programming languages. This is despite the fact that type inference for polymorphic recursion using 8types has been proved undecidable. Th ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
Inferring types for polymorphic recursive function definitions (abbreviated to polymorphic recursion) is a recurring topic on the mailing lists of popular typed programming languages. This is despite the fact that type inference for polymorphic recursion using 8types has been proved undecidable. This report presents several programming examples involving polymorphic recursion and determines their typability under various type systems, including the HindleyMilner system, an intersectiontype system, and extensions of these two. The goal of this report is to show that many of these examples are typable using a system of intersection types as an alternative form of polymorphism. By accomplishing this, we hope to lay the foundation for future research into a decidable intersectiontype inference algorithm. We do not
Type and FlowDirected Compilation for Specialized Data Representations
, 2002
"... The combination of intersection and union types with ow types gives the compiler writer unprecedented exibility in choosing data representations in the context of a typed intermediate language. We present the design of such a language and the design of a framework for exploiting the type system to s ..."
Abstract
 Add to MetaCart
The combination of intersection and union types with ow types gives the compiler writer unprecedented exibility in choosing data representations in the context of a typed intermediate language. We present the design of such a language and the design of a framework for exploiting the type system to support multiple representations of the same data type in a single program. The framework can transform the input term, in a typesafe way, so that dierent data representations can be used in the transformed term  even if they share a use site in the pretransformed term. We have implemented a compiler using the typed intermediate language and instantiated the framework to allow specialized function representations. We test the compiler on a set of benchmarks and show that the compiletime performance is reasonable. We further show that the compiled code does indeed bene t from specialized function representations.
Intersection Types and the Linear LambdaCalculus
, 2001
"... In this paper we present a notion of expansion of a term in the lambdacalculus which transforms terms into linear terms. This transformation replaces each occurrence of a variable in the original term by a fresh variable taking into account nontrivial implications in the structure of the term c ..."
Abstract
 Add to MetaCart
In this paper we present a notion of expansion of a term in the lambdacalculus which transforms terms into linear terms. This transformation replaces each occurrence of a variable in the original term by a fresh variable taking into account nontrivial implications in the structure of the term caused by these simple replacements. We then prove that the class of terms which can be expanded is the same of terms typable in an Intersection Type System, i.e., the strongly normalizable terms. This shows that there is a clear relation between Intersection Types, where a different type is given to different occurrences of the same variable, and linearization, where each occurrence of a shared variable is transformed into a new variable.