Results 1  10
of
20
The maximality of the typed lambda calculus and of cartesian closed categories
 Publ. Inst. Math. (N.S
"... From the analogue of Böhm’s Theorem proved for the typed lambda calculus, without product types and with them, it is inferred that every cartesian closed category that satisfies an equality between arrows not satisfied in free cartesian closed categories must be a preorder. A new proof is given here ..."
Abstract

Cited by 17 (2 self)
 Add to MetaCart
From the analogue of Böhm’s Theorem proved for the typed lambda calculus, without product types and with them, it is inferred that every cartesian closed category that satisfies an equality between arrows not satisfied in free cartesian closed categories must be a preorder. A new proof is given here of these results, which were obtained previously by Richard Statman and Alex K. Simpson.
Memoization in typedirected partial evaluation
 PROCEEDINGS OF THE 2002 ACM SIGPLAN/SIGSOFT CONFERENCE ON GENERATIVE PROGRAMMING AND COMPONENT ENGINEERING, NUMBER 2487 IN LECTURE NOTES IN COMPUTER SCIENCE
, 2002
"... We use a code generator—typedirected partial evaluation— to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the function ..."
Abstract

Cited by 14 (6 self)
 Add to MetaCart
We use a code generator—typedirected partial evaluation— to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the functions and typedirected partial evaluation provides a convenient setting to obtain the normal form of their composition. However, offtheshelf typedirected partial evaluation turns out to yield gigantic normal forms. We identify that this gigantism is due to redundancies, and that these redundancies originate in the handling of sums, which uses delimited continuations. We successfully eliminate these redundancies by extending typedirected partial evaluation with memoization capabilities. The result only works for pure functional programs, but it provides an unexpected use of code generation and it yields ordersofmagnitude improvements both in time and in space for type isomorphisms.
Efficient Type Matching
, 2001
"... Palsberg and Zhao [14] presented an O(n²) time algorithm for matching two recursive types. In this paper, we present an O(n log n) algorithm for the same problem. Our algorithm works by reducing the type matching problem to the wellunderstood problem of finding a sizestable partition of a graph. ..."
Abstract

Cited by 11 (2 self)
 Add to MetaCart
Palsberg and Zhao [14] presented an O(n²) time algorithm for matching two recursive types. In this paper, we present an O(n log n) algorithm for the same problem. Our algorithm works by reducing the type matching problem to the wellunderstood problem of finding a sizestable partition of a graph. Our result may help improve systems, such as Polyspin and Mockingbird, that are designed to facilitate interoperability of software components. We also discuss possible applications of our algorithm to Java. Issues related to subtyping of recursive types are also discussed.
A labelselective lambdacalculus with optional arguments and its compilation method
 RIMS Preprint 1041, Research Instit. for Mathematical Sciences, Kyoto Univ
, 1995
"... The use of labels for argument passing has proved to be a useful extension to programming languages, particularly when we introduce optional arguments. We propose here an adaptation of such a system, as can be found in Common LISP, to stronglytyped curried functional languages. For this we extend M ..."
Abstract

Cited by 10 (5 self)
 Add to MetaCart
The use of labels for argument passing has proved to be a useful extension to programming languages, particularly when we introduce optional arguments. We propose here an adaptation of such a system, as can be found in Common LISP, to stronglytyped curried functional languages. For this we extend MLstyle polymorphic typing to labeled arguments, outoforder application, and optional arguments. We also provide a compilation method towards polymorphic lambdacalculus, which is proved syntactically sound for free reduction, and semantically correct for callbyname semantics. We implemented it, and showed the overhead caused by using this extension to be negligible when outoforder parameter passing is used, and null when it is not. Topics: language design, compilation methods, type theory. 1
Subtyping Recursive Types modulo Associative Commutative Products
 Seventh International Conference on Typed Lambda Calculi and Applications (TLCA ’05
, 2003
"... We study subtyping of recursive types in the presence of associative and commutative productsthat is, subtyping modulo a restricted form of type isomorphisms. We show that this relation, which we claim is useful in practice, is a composition of the usual subtyping relation with the recently propo ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
We study subtyping of recursive types in the presence of associative and commutative productsthat is, subtyping modulo a restricted form of type isomorphisms. We show that this relation, which we claim is useful in practice, is a composition of the usual subtyping relation with the recently proposed notion of equality up to associativity and commutativity of products, and we propose an efficient decision algorithm for it. We also provide an automatic way of constructing coercions between related types.
Efficient and Flexible Matching of Recursive Types
, 2000
"... Equality and subtyping of recursive types have been studied in the 1990s by Amadio and Cardelli; Kozen, Palsberg, and Schwartzbach; Brandt and Henglein; and others. Potential applications include automatic generation of bridge code for multilanguage systems and typebased retrieval of software m ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
Equality and subtyping of recursive types have been studied in the 1990s by Amadio and Cardelli; Kozen, Palsberg, and Schwartzbach; Brandt and Henglein; and others. Potential applications include automatic generation of bridge code for multilanguage systems and typebased retrieval of software modules from libraries. Auerbach, Barton, and Raghavachari advocate a highly exible combination of matching rules for which there, until now, are no ecient algorithmic techniques. In this paper, we present an ecient decision procedure for a notion of type equality that includes unfolding of recursive types, and associativity and commutativity of product types, as advocated by Auerbach et al. For two types of size at most n, our algorithm decides equality in O(n 2 ) time. The algorithm iteratively prunes a set of type pairs, and eventually it produces a set of pairs of equal types. In each iteration, the algorithm exploits a socalled coherence property of the set of type pairs pr...
Pidgin: Types for safe and natural multilanguage interoperation
 QUALIFYING EXAM RESEARCH REPORT, MAY 2008
, 2008
"... Bridging code between different languages usually requires the use of foreign function interfaces (FFIs). While FFIs and tools that generate bindings between different peering languages exist, using them often produces code that remains lowlevel, unsafe, and unnatural. This paper presents Pidgin, a ..."
Abstract
 Add to MetaCart
Bridging code between different languages usually requires the use of foreign function interfaces (FFIs). While FFIs and tools that generate bindings between different peering languages exist, using them often produces code that remains lowlevel, unsafe, and unnatural. This paper presents Pidgin, a formal language with unifying type system that allows us to model and reason about interoperability between multiple interoperating programming languages. This language extends the simply typed λ calculus with language contexts, a foreign embed term, opaque foreign value packing and unpacking terms, and handle types. We then prove its soundness. We then present a sketch of a tool based upon the Pidgin language. It generates typesafe glue code using existing parts of the Java and OCaml FFIs. We focus on creating safe, highlevel, and natural interfaces that need only rely upon the target language’s native typechecker.
Cn(log 2 (n)).
, 1996
"... is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent publications in the BRICS Report Series. Copies may be obtained by contacting: BRICS ..."
Abstract
 Add to MetaCart
is permitted for educational or research use on condition that this copyright notice is included in any copy. See back inner page for a list of recent publications in the BRICS Report Series. Copies may be obtained by contacting: BRICS
unknown title
"... Functional reactive programming (FRP) is a declarative programming paradigm where the basic notions are continuous, timevarying behaviors and discrete, eventbased reactivity. FRP has been used successfully in many reactive programming domains such as animation, robotics, and graphical user interfa ..."
Abstract
 Add to MetaCart
Functional reactive programming (FRP) is a declarative programming paradigm where the basic notions are continuous, timevarying behaviors and discrete, eventbased reactivity. FRP has been used successfully in many reactive programming domains such as animation, robotics, and graphical user interfaces. The success of FRP in these domains encourages us to consider its use in realtime applications, where it is crucial that the cost of running a program be bounded and known before runtime. But previous work on the semantics and implementation of FRP was not explicitly concerned about the issues of cost. In fact, the resource consumption of FRP programs in the current implementation is often hard to predict. As a first step towards addressing these concerns, this paper presents RealTime FRP (RTFRP), a staticallytyped language where the time and space cost of each execution step for a given program is statically bounded. To take advantage of existing work on languages with bounded resources, we split RTFRP into two parts: a reactive part that captures the essential ingredients of FRP programs, and a base language part that can be instantiated to any generic programming language that has been shown to be terminating and resourcebounded. This allows us to focus on the issues specific to RTFRP, namely, two forms of recursion. After presenting the operational explanation of what can go wrong due to the presence of recursion, we show how the typed version of the language is terminating and resourcebounded. Most of our FRP programs are expressible directly in RTFRP. The rest are expressible via a simple mechanism that integrates RTFRP with the base language. ∗ Funded by DARPA F3361599C3013 and NSF CCR
Typing Weakly Normalizable Terms via Intersection Types and Expansion Variables
, 2003
"... This paper explores the extension of an existing modular type system with intersection types and expansion variables (known as System I) to type every normalizable term. This extension of System I is known as System I # ..."
Abstract
 Add to MetaCart
This paper explores the extension of an existing modular type system with intersection types and expansion variables (known as System I) to type every normalizable term. This extension of System I is known as System I #