Presentation at ICFP conference
AlumniTillmann Rendel presents the paper Automatic Refunctionalization to a Language with Copattern Matching at the International Conference on Functional Programming in Vancouver, British Columbia. The paper is joint work with Julia Trieflinger
AlumniJulia Trieflinger and Klaus Ostermann
Defunctionalization and refunctionalization establish a correspondence between first-class functions and pattern matching, but the correspondence is not symmetric: Not all uses of pattern matching can be automatically refunctionalized to uses of higher-order functions. To remedy this asymmetry, we generalize from first-class functions to arbitrary codata. This leads us to full defunctionalization and refunctionalization between a codata language based on copattern matching and a data language based on pattern matching.
We observe how programs can be written as matrices so that they are modularly extensible in one dimension but not the other. In this representation, defunctionalization and refunctionalization correspond to matrix transposition which effectively changes the dimension of extensibility a program supports. This suggests applications to the expression problem.