Abstract: |
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.
|