functorial lambda calculus

The following report is available from:

Comments most welcome. 
Barry Jay


	Functorial Lambda-calculus
		 C. Barry Jay

Functorial lambda-calculus represents some type constructors as
functors, whose quantification supports new forms of polymorphism.
This is exploited by a powerful new generic programming technique,
called program extension, whose evaluation does not use explicit
types. It can be used to define all the standard second-order
combinators, for mapping, folding, etc. so that they apply to
arbitrary data types. It can also be used to define generic functions
for equality, addition, assignment and shape. In particular, shape
evaluation can be used to support static specialisation, and to reduce
space usage.

This paper introduces the calculus, provides a type inference
algorithm, and shows how to augment its expressive power and improve
its efficiency by adding more constructions and optimising evaluation.