This book offers a comprehensive view of the best and the
latest work in functional programming. It is the proceedings
of a major international conference and contains 30 papers
selected from 126 submitted. A number of themes emerge. One
is a growing interest in types: powerful type systems or
type checkers supporting overloading, coercion, dynamic
types, and incremental inference; linear types to optimize
storage, and polymorphic types to optimize semantic
analysis. The hot topic of partial evaluation is well
represented: techniques for higher-order binding-time
analysis, assuring termination of partial evaluation, and
improving the residual programs a partial evaluator
generates. The thorny problem of manipulating state in
functional languages is addressed: one paper even argues
that parallel programs with side-effects can be "more
declarative" than purely functional ones. Theoretical work
covers a new model of types based on projections,
parametricity, a connection between strictness analysis and
logic, and a discussion of efficient implementations of the
lambda-calculus. The connection with computer architecture
and a variety of other topics are also addressed.
Type classes and overloading resolution via order-sorted unification.- On the complexity of ML typability with overloading.- Coercive type isomorphism.- Compiler-controlled multithreading for lenient parallel languages.- Multi-thread code generation for dataflow architectures from non-strict programs.- GAML: A parallel implementation of lazy ML.- Functional programming with bananas, lenses, envelopes and barbed wire.- A strongly-typed self-applicable partial evaluator.- Automatic online partial evaluation.- Assignments for applicative languages.- Linearity and laziness.- Syntactic detection of single-threading using continuations.- A projection model of types.- What is an efficient implementation of the ?-calculus?.- Outline of a proof theory of parametricity.- Reasoning about simple and exhaustive demand in higher-order lazy languages.- Strictness analysis in logical form.- A note on abstract interpretation of polymorphic functions.- Incremental polymorphism.- Dynamics in ML.- Implementing regular tree expressions.- Efficient type inference for higher-order binding-time analysis.- Finiteness analysis.- For a better support of static data flow.- An architectural technique for cache-level garbage collection.- M-structures: Extending a parallel, non-strict, functional language with state.- List comprehensions in agna, a parallel persistent object system.- Generating efficient code for lazy functional languages.- Making abstract machines less abstract.- Unboxed values as first class citizens in a non-strict functional language.