Skip to content

Language interpreter for "PolyAML: A Polymorphic Aspect-oriented Functional Programming Language" at ACM International Conference on Functional Programming

Notifications You must be signed in to change notification settings

dantasfiles/PolyAML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the language interpreter for the paper PolyAML: A Polymorphic Aspect-oriented Functional Programmming Language by Daniel S. Dantas, David Walker, Geoffrey Washburn & Stephanie Weirich, presented at the ACM International Conference on Functional Programming.

https://dl.acm.org/citation.cfm?id=1086404

This paper defines PolyAML, a typed functional, aspect-oriented programming language. The main contribution of PolyAML is the seamless integration of polymorphism, run-time type analysis and aspect-oriented programming language features. In particular, PolyAML allows programmers to define type-safe polymorphic advice using pointcuts constructed from a collection of polymorphic join points. PolyAML 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.

About

Language interpreter for "PolyAML: A Polymorphic Aspect-oriented Functional Programming Language" at ACM International Conference on Functional Programming

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published