Principal Type Specialisation
Paper in proceeding, 2002
Type specialisation is an approach to program specialisation that works with both a program and its type to produce specialised versions of each. As it combines many powerful features, it appears to be a good framework for automatic program production, - despite the fact that it was designed originally to express optimal specialisation for interpreters written in typed languages. The original specification of type specialisation used a system of rules expressing it as a generalised type system, rather than the usual view of specialisation as generalised evaluation. That system, while powerful, has some weaknesses not widely recognized - the most important being the inability to express principal type specialisations (a principal specialisation is one that is "more general" than any other for a given specialisable term, and from which those can be obtained by a suitable notion of instantiation). This inability is a problem when extending type specialisation to deal with polymorphism or modules. This work presents a different formulation of the system specifying type specialisation capturing the notion of principal specialisation for a language with static constructions and polyvariance. It is a step forward in the study of type specialisation for polymorphic languages and lazy languages, and also permits modularity of specialisation, and better implementations.
Type specialisation
Program specialisation
Type based transformation
Qualified types