2pm Friday 11 April 2003
Room 2511, JCMB, King's Buildings
Over the last couple of years my research has focused on growing languages to write typical three-tier programs that munge relational tables into hierarchical trees by means of an object-oriented or functional language.
The early attempts resulted in a family of domain specific embedded languages in Haskell. While the DSL approach is certainly elegant, it remained a purely academic exercise. In particular it is impossible to add new syntax (for example for XML literals), and more importantly, embedding foreign type-systems into the host language requires lots of tricky type hackery (phantom types, monads, rank-n polymorphism, ...) while still not achieving full fidelity.
More recently, I have therefore been investigating language and type-system extensions in an imperative object-oriented setting instead of embedding into a pure functional language. This talk will discuss the preliminary outcome of trying to unify the object-oriented, relational and hierarchical data-models by growing an object-oriented host language by adding streams (lazy lists), tuples (sequences), union and intersection types, closures, generalized member access (XPath queries) and joins (SQL select queries), and XML literals.