The following report is available from: <http://www/socs.uts.edu.au/~cbj/Publications/fl_report.ps.gz> 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.