Wed 17 Jul
An algebraic approach to mixins and modularity
The notion of "mixin" ("abstract class") comes originally from object
oriented programming, and means a class where some methods are not defined
("deferred"), which can be effectively used only when applied to some
superclass implementing the deferred methods.
Actually, this notion is completely independent from the object and class
concepts, and can be formulated in a general way in the context of module
composition, getting what we call "mixin modules", i.e. modules with
deferred components. The main advantage is the possibility of defining
mutually dependent modules, allowing recursive definitions to span module
boundaries, and of combining them by means of a merge operation which in a
sense generalizes the usual module instantiation (e.g. functor application
We present an algebraic formalization of the notion of mixin
module, together with a set of basic operators for
composing mixins, intended to be a kernel language with clean semantics
in which to express more complex operators of existing modular
languages (including variants of inheritance in object oriented programming).
The semantics of the operators is given in an "institution independent"
way, i.e. is parameterized on the semantic framework modeling features of
the underlying core language.