Presentation at Workshop on Generic Programming
Tillmann Rendel
Tillmann Rendel presents an invited talk at the
Workshop on Generic Programming (WGP) in Vancouver, British
Columbia. The talk is based on work with
Jonathan Brachthäuser
ProfessorJonathan Brachthäuser, Julia Trieflinger
Julia Trieflinger,
Paolo Giarrusso
Paolo Giarrusso, and Klaus Ostermann
ProfessorKlaus Ostermann.
Contents
The main part of the talk presents three ideas related to the expression problem.
-
It turns out that we can use defunctionalization and refunctionalization to convert between shallow and deep embedding of a DSL, and between a datatype with a fold function and the final embedding of that datatype.
-
We need to go beyond the two dimensions of modularity described by the expression problem to scale to large software systems, allowing components with internal structure and dependencies. (Based on our modular, linear and compositional encoding of attribute grammars as object algebras in Scala, see algebra composition project and OOPSLA 2014 paper).
-
Should it be possible to dualize the expression problem (about open data types) to the co-expression problem (about open codata types)?
The talk ends with a short overview of our recent work on a language with symmetric support for programming with data and codata (see Uroboro project and ICFP 2015 paper, which was partly motivated by the three ideas presented in the main part of the talk.
Further Information
Publications
From Object Algebras to Attribute Grammars
by Tillmann Rendel, Jonathan Immanuel Brachthäuser, and Klaus Ostermann
In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA), pages 377–395. ACM Press, 2014.
Automatic Refunctionalization to a Language with Copattern Matching: With Applications to the Expression Problem
by Tillmann Rendel, Julia Trieflinger, and Klaus Ostermann
In Proceedings of International Conference on Functional Programming, pages 269–279. ACM, 2015.