Friday, November 17, 2006
The type system of ECMA Eiffel
ECMA Eiffel brings a number of changes and refinements to the type system of Eiffel. Matthias Konrad has been carefully analysing these, and is documenting his work at the EiffelStudio wiki.
Matthias has worked out a mathematical model of dynamic binding for ECMA Eiffel, and supported this with a substantial worked example and a formal implementation of the model in Haskell.
The ECMA Eiffel Standard defines the "Unfolded Form" of an Eiffel class, and uses this to describe the semantics of various language elements of ECMA Eiffel, such as precursor and repeated inheritance. Matthias examines unfolding, and its consequences on "rename", "select" and "precursor". He also looks at transposition of inherited features into a descendant (for production of the flat-short representation, or in the definition of some unfolded forms), which has consequences for repeated inheritance (with or without covariant redefinition). Replication is given a page of its own. There's also an article under development on multiple generic constraints, for which Matthias proposes two possible solutions, neither of which appears to be completely satisfactory.
The ECMA standard introduces a new solution to the "CAT call" problem, by disallowing covariant argument redefinition except to a detachable type. Matthias notes that this considerably weakens the power of covariance in Eiffel, especially if the solution is extended to covariant generics (which doesn't appear to be explicitly addressed in ECMA Eiffel). Also see Matthias' work on the Dynamic Type Set and CAT call freeness detection algorithms.
Finally there are some notes of minor ECMA problems that will presumably be addressed in a future revision of the specification.
All in all, a most interesting set of pages.
Matthias has worked out a mathematical model of dynamic binding for ECMA Eiffel, and supported this with a substantial worked example and a formal implementation of the model in Haskell.
The ECMA Eiffel Standard defines the "Unfolded Form" of an Eiffel class, and uses this to describe the semantics of various language elements of ECMA Eiffel, such as precursor and repeated inheritance. Matthias examines unfolding, and its consequences on "rename", "select" and "precursor". He also looks at transposition of inherited features into a descendant (for production of the flat-short representation, or in the definition of some unfolded forms), which has consequences for repeated inheritance (with or without covariant redefinition). Replication is given a page of its own. There's also an article under development on multiple generic constraints, for which Matthias proposes two possible solutions, neither of which appears to be completely satisfactory.
The ECMA standard introduces a new solution to the "CAT call" problem, by disallowing covariant argument redefinition except to a detachable type. Matthias notes that this considerably weakens the power of covariance in Eiffel, especially if the solution is extended to covariant generics (which doesn't appear to be explicitly addressed in ECMA Eiffel). Also see Matthias' work on the Dynamic Type Set and CAT call freeness detection algorithms.
Finally there are some notes of minor ECMA problems that will presumably be addressed in a future revision of the specification.
All in all, a most interesting set of pages.