High-Performance Generic Programming [HPGP]
Wolfgang Schreiner, Hoon Hong
Research and development goals
A functor is a parameterized program module i.e. a function that takes modules as arguments and returns a module as its result. A higher-order functor deals in the same way with modules whose components are functors themselves. We are developing a generic compilation system for the construction of high-performance mathematical software libraries for scientific and technical application domains. This system has the following features:
It is based on a powerful higher-order functor language.
It is an open library that can be retargeted to any core language.
It is able to resolve functor instantiation at compile-time.
The functor language is expressive enough to build all types and type constructors without referring to the core language (thus maximizing flexibility) and to express all interactions between modules by parameterization (thus maximizing reusability). By compile-time instantiation, genericity does not cause any execution overhead; by automatically sharing instantiated code among all users, an explosion of library sizes is avoided.