December 7 '95 Seminar Minutes


About 20 people attended the seminar.

9:30am Olivier Danvy: Type-Directed Partial Evaluation

We present a strikingly simple partial evaluator, that is type-directed and reifies a compiled program into the text of a residual, specialized program. Our partial evaluator is the part of an offline partial evaluator that residualizes static values in dynamic contexts at higher types. Its restriction to the simply typed lambda-calculus coincides with Berger and Schwichtenberg's ``inverse of the evaluation functional'' (LICS'91), which is an instance of normalization in a logical setting.

11:00am Richard Kelsey: The Missing Link

I will describe a module system for Scheme that is based on procedures, rather than syntax, and uses an explicit linking operation to resolve module dependencies. Modules consist of encapsulated program source, along with any required or provided interfaces. The code in a module is specified as data and is syntactically disjoint from the code that makes the module. Program linking, compilation, and execution are expressed as operations on sets of modules. The system supports both static linking and rapid turnaround during program development.

12:30pm Lunch

2:00pm New Business

2:15pm Matthias Blume: Refining Hygienic Macros for Modules and Separate Compilation

Genuine differences in the treatment of identifiers in block-structured languages and those that provide qualified names for accessing components of modules or aggregate data structures invalidate some of the assumptions hygienic macro systems are based on. We will investigate how these assumptions have to be changed, and the consequences for the construction of hygienic macro expanders.

Macro expansion algorithms rely on their ability to rename identifiers throughout the program. This creates difficulties when some identifiers are used to connect individually compiled program units. Therefore, it is necessary to make separate compilation aware of macro expansion and vice versa. We will show how this can be done.

3:45pm Andrew Appel: Short work-in-progress talk on cross-module inline expansion.

Suresh Jagannathan / NEC Research Institute /