European Conference on Object-Oriented Programming, July 2006
A preliminary presentation on this work appeared at the informal FOOL/WOOD 2006 workshop, January 2006.
We present F(EML), a language that combines classes, extensible functions, symmetric multiple dispatching, and a practical system for parameterized modules. Parameterized modules permit subclasses and function extensions to be defined and typechecked once, and then reused to extend multiple argument modules. F(EML)'s predecessor, EML, supported classes and extensible functions with multiple dispatch, but its support for parameterized modules was weak. F(EML)'s key novel features relative to EML are alias declarations, generalized type relations in module signatures, and a nontrivial definition of signature subsumption.