This idea is inspired by Eiffel , with its inclusion of inheritance in defining parameterization. It is unique, however, in making inheritance a core mechanism for parameterization. The template-metaprogramming mechanism is confusing and opaque for most software developers, however. Functional languages like Haskell seem more capable of incorporating metaprogramming capabilities into a programming language. Whereas the functional nature of Haskell is well suited for metaprogramming, it is not well suited for compiled programming.
Functional languages are notoriously difficult to compile into efficient code.
A future language might incorporate the best of both worlds, using functional syntax for metaprogramming and imperative, object-oriented syntax for compiled programming. The functional metalanguage would operate on the classes and methods of the imperative compiled language. This idea is inspired by Haskell and Todd Veldhuizen's work on expression templates, template metaprogramming, and active libraries. A good implementation of this idea might be easy to use and still be capable of the kinds of optimizations associated with Dawson Engler's concept of interface compilation. If most code is reusable through compile-time parameterization and metaprogramming, there is much less of a role for static object code and object libraries.