Presentation at Workshop on Generic Programming
ResearcherTillmann 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
ResearcherJonathan Brachthäuser, Julia Trieflinger
ResearcherJulia Trieflinger, Paolo Giarrusso
ResearcherPaolo Giarrusso, and Klaus Ostermann
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.