Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Geoffrey Washburn is active.

Publication


Featured researches published by Geoffrey Washburn.


theorem proving in higher order logics | 2005

Mechanized metatheory for the masses: the PoplMark challenge

Brian E. Aydemir; Aaron Bohannon; Matthew Fairbairn; J. Nathan Foster; Benjamin C. Pierce; Peter Sewell; Dimitrios Vytiniotis; Geoffrey Washburn; Stephanie Weirich; Steve Zdancewic

How close are we to a world where every paper on programming languages is accompanied by an electronic appendix with machine-checked proofs? We propose an initial set of benchmarks for measuring progress in this area. Based on the metatheory of System F<:, a typed lambda-calculus with second-order polymorphism, subtyping, and records, these benchmarks embody many aspects of programming languages that are challenging to formalize: variable binding at both the term and type levels, syntactic forms with variable numbers of components (including binders), and proofs demanding complex induction principles. We hope that these benchmarks will help clarify the current state of the art, provide a basis for comparing competing technologies, and motivate further research.


ACM Transactions on Programming Languages and Systems | 2008

AspectML: A polymorphic aspect-oriented functional programming language

Daniel S. Dantas; David Walker; Geoffrey Washburn; Stephanie Weirich

This article defines AspectML, a typed functional, aspect-oriented programming language. The main contribution of AspectML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, AspectML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. AspectML also comes equipped with a type inference algorithm that conservatively extends Hindley--Milner type inference. To support first-class polymorphic point-cut designators, a crucial feature for developing aspect-oriented profiling or logging libraries, the algorithm blends the conventional Hindley--Milner type inference algorithm with a simple form of local type inference. We give our language operational meaning via a type-directed translation into an expressive type-safe intermediate language. Many complexities of the source language are eliminated in this translation, leading to a modular specification of its semantics. One of the novelties of the intermediate language is the definition of polymorphic labels for marking control-flow points. When a set of labels is assembled as a pointcut, the type of each label is an instance of the type of the pointcut.


international conference on functional programming | 2005

Poly AML : a polymorphic aspect-oriented functional programming language

Daniel S. Dantas; David Walker; Geoffrey Washburn; Stephanie Weirich

This paper defines PolyAML, a typed functional, aspect-oriented programming language. The main contribution of Poly<SMALL>AML</SMALL> is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, Poly<SMALL>AML</SMALL> allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. Poly<SMALL>AML</SMALL> also comes equipped with a type inference algorithm that conservatively extends Hindley-Milner type inference. To support first-class polymorphic point-cut designators, a crucial feature for developing aspect-oriented profiling or logging libraries, the algorithm blends the conventional Hindley-Milner type inference algorithm with a simple form of local type inference.We give our language operational meaning via a type-directed translation into an expressive type-safe intermediate language. Many complexities of the source language are eliminated in this translation, leading to a modular specification of its semantics. One of the novelties of the intermediate language is the definition of polymorphic labels for marking control-flow points. These labels are organized in a tree structure such that a parent in the tree serves as a representative for all of its children. Type safety requires that the type of each child is less polymorphic than its parent type. Similarly, when a set of labels is assembled as a pointcut, the type of each label is an instance of the type of the pointcut.


Journal of Functional Programming | 2008

Boxes go bananas: Encoding higher-order abstract syntax with parametric polymorphism*

Geoffrey Washburn; Stephanie Weirich

Higher-order abstract syntax is a simple technique for implementing languages with functional programming. Object variables and binders are implemented by variables and binders in the host language. By using this technique, one can avoid implementing common and tricky routines dealing with variables, such as capture-avoiding substitution. However, despite the advantages this technique provides, it is not commonly used because it is difficult to write sound elimination forms (such as folds or catamorphisms) for higher-order abstract syntax. To fold over such a data type, one must either simultaneously define an inverse operation (which may not exist) or show that all functions embedded in the data type are parametric. In this paper, we show how first-class polymorphism can be used to guarantee the parametricity of functions embedded in higher-order abstract syntax. With this restriction, we implement a library of iteration operators over data structures containing functionals. From this implementation, we derive “fusion laws” that functional programmers may use to reason about the iteration operator. Finally, we show how this use of parametric polymorphism corresponds to the Schurmann, Despeyroux and Pfenning method of enforcing parametricity through modal types. We do so by using this library to give a sound and complete encoding of their calculus into System . This encoding can serve as a starting point for reasoning about higher-order structures in polymorphic languages.


international conference on functional programming | 2006

Simple unification-based type inference for GADTs

Simon L. Peyton Jones; Dimitrios Vytiniotis; Stephanie Weirich; Geoffrey Washburn


Archive | 2004

Wobbly types: type inference for generalised algebraic data types

Simon L. Peyton Jones; Geoffrey Washburn; Stephanie Weirich


international conference on functional programming | 2003

Boxes go bananas: encoding higher-order abstract syntax with parametric polymorphism

Geoffrey Washburn; Stephanie Weirich


types in languages design and implementation | 2005

An open and shut typecase

Dimitrios Vytiniotis; Geoffrey Washburn; Stephanie Weirich


logic in computer science | 2005

Generalizing parametricity using information-flow

Geoffrey Washburn; Stephanie Weirich


workshop on generic programming | 2006

Good advice for type-directed programming aspect-oriented programming and extensible generic functions

Geoffrey Washburn; Stephanie Weirich

Collaboration


Dive into the Geoffrey Washburn's collaboration.

Top Co-Authors

Avatar

Stephanie Weirich

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Aaron Bohannon

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Brian E. Aydemir

California Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

J. Nathan Foster

University of Pennsylvania

View shared research outputs
Top Co-Authors

Avatar

Steve Zdancewic

University of Pennsylvania

View shared research outputs
Researchain Logo
Decentralizing Knowledge