Washburn, Geoffrey
Email Address
ORCID
Disciplines
Search Results
Now showing 1 - 2 of 2
Publication Cause and Effect: Type Systems for Effects and Dependencies(2005-11-28) Washburn, GeoffreyType systems commonly used in practice today fail to capture essential aspects of program behavior: The effects and dependencies of the programs. In this paper, we examine a prototypical effect type system in the style of Gifford et al., and a canonical example of a dependency type system based upon the work of Zdancewic. Finally, we show how these two type systems can be embedded in a more general framework, a monadic type system as developed by Pfenning and Davies.Publication AspectML: A Polymorphic Aspect-Oriented Functional Programming Language(2008-05-01) Dantas, Daniel; Washburn, Geoffrey; Walker, David; Weirich, StephanieThis paper 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.