This book offers a comprehensive view of the best and thelatest work in functional programming. It is the proceedingsof a major international conference and contains 30 papersselected from 126 submitted. A number of themes emerge. Oneis a growing interest in types: powerful type systems ortype checkers supporting overloading, coercion, dynamictypes, and incremental inference; linear types to optimizestorage, and polymorphic types to optimize semanticanalysis. The hot topic of partial evaluation is wellrepresented: techniques for higher-order binding-timeanalysis, assuring termination of partial evaluation, andimproving the residual programs a partial evaluatorgenerates. The thorny problem of manipulating state infunctional languages is addressed: one paper even arguesthat parallel programs with side-effects can be "moredeclarative" than purely functional ones. Theoretical workcovers a new model of types based on projections,parametricity, a connection between strictness analysis andlogic, and a discussion of efficient implementations of thelambda-calculus. The connection with computer architectureand 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.
Series: Lecture Notes in Computer Science
Number Of Pages: 672
Published: 7th August 1991
Publisher: SPRINGER VERLAG GMBH
Country of Publication: DE
Dimensions (cm): 23.39 x 15.6
Weight (kg): 0.93