Matthias Felleisen

Learn More
We present a new approach to proving type soundness for Hindley/Milner-style polymorphic type systems. The keys to our approach are (1) an adaptation of subject reduction theorems from combinatory logic to programming languages, and (2) the use of rewriting techniques for the speciication of the language semantics. The approach easily extends from(More)
In order to simplify the compilation process, many compilers for higher-order languages use the continuation-passing style (CPS) transformation in a first phase to generate an intermediate representation of the source program. The salient aspect of this intermediate form is that all procedures take an argument that represents the rest of the computation(More)
The syntactic theories of control and state are conservative extensions of the λv-calculus for equational reasoning about imperative programming facilities in higher-order languages. Unlike the simple λv-calculus, the extended theories are mixtures of equivalence relations and compatible congruence relations on the term language, which significantly(More)
While class-based object-oriented programming languages provide a flexible mechanism for re-using and managing related pieces of code, they typically lack linguistic facilities for specifying a uniform extension of many classes with one set of fields and methods. As a result, programmers are unable to express certain abstractions over classes.In this paper(More)
The mismatch between the operational semantics of the lambda calculus and the actual behavior of implementations is a major obstacle for compiler writers. They cannot explain the behavior of their evaluator in terms of source level syntax, and they cannot easily compare distinct implementations of different lazy strategies. In this paper we derive an(More)
An analysis of the &#955;<subscrpt>ugr;</subscrpt>-C-calculus and its problematic relationship to operational equivalence leads to a new control facility: the <italic>prompt-application</italic>. With the introduction of prompt-applications, the control calculus becomes a traditional calculus all of whose equations imply operational equivalence. In(More)
The literature on programming languages contains an abundance of informal claims on the relative expressive power of programming languages, but there is no framework for formalizing such statements nor for deriving interesting consequences. As a rst step in this direction, we develop a formal notion of expressiveness and investigate its properties. To(More)