TY - GEN
T1 - Staging beyond terms
T2 - 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2016
AU - Inoue, Jun
AU - Kiselyov, Oleg
AU - Kameyama, Yukiyoshi
PY - 2016/1/11
Y1 - 2016/1/11
N2 - Staging is a program generation paradigm with a clean, wellinvestigated semantics which statically ensures that the generated code is always well-typed and well-scoped. Staging is often used for specializing programs to the known properties or parts of data to improve efficiency, but so far it has been limited to generating terms. This short paper describes our ongoing work on extending staging, with its strong safety guarantees, to generation of nonterms, focusing on ML-style modules. The purpose is to map out the promises and challenges, then to pose a question to solicit the community's expertise in evaluating how essential our extensions are for the purpose of applying staging beyond the realm of terms. We demonstrate our extensions' use in specializing functor applications to eliminate its (currently large) overhead in OCaml. We explain the challenges that those extensions bring in and identify a promising line of attack. Unexpectedly, however, it turns out that we can avoid module generation altogether by representing modules, possibly containing abstract types, as polymorphic records. With the help of first-class modules, module specialization reduces to ordinary term specialization, which can be done with conventional staging. The extent to which this hack generalizes is unclear. Thus we have a question to the community: is there a compelling use case for module generation? With these insights and questions, we offer a starting point for a long-term program in the next stage of staging research.
AB - Staging is a program generation paradigm with a clean, wellinvestigated semantics which statically ensures that the generated code is always well-typed and well-scoped. Staging is often used for specializing programs to the known properties or parts of data to improve efficiency, but so far it has been limited to generating terms. This short paper describes our ongoing work on extending staging, with its strong safety guarantees, to generation of nonterms, focusing on ML-style modules. The purpose is to map out the promises and challenges, then to pose a question to solicit the community's expertise in evaluating how essential our extensions are for the purpose of applying staging beyond the realm of terms. We demonstrate our extensions' use in specializing functor applications to eliminate its (currently large) overhead in OCaml. We explain the challenges that those extensions bring in and identify a promising line of attack. Unexpectedly, however, it turns out that we can avoid module generation altogether by representing modules, possibly containing abstract types, as polymorphic records. With the help of first-class modules, module specialization reduces to ordinary term specialization, which can be done with conventional staging. The extent to which this hack generalizes is unclear. Thus we have a question to the community: is there a compelling use case for module generation? With these insights and questions, we offer a starting point for a long-term program in the next stage of staging research.
KW - First-class modules
KW - Functional programming
KW - Multi-stage programming
KW - Type optimization
KW - Type systems
UR - http://www.scopus.com/inward/record.url?scp=84966489876&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84966489876&partnerID=8YFLogxK
U2 - 10.1145/2847538.2847548
DO - 10.1145/2847538.2847548
M3 - Conference contribution
AN - SCOPUS:84966489876
T3 - PEPM 2016 - Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, co-located with POPL 2016
SP - 103
EP - 108
BT - PEPM 2016 - Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, co-located with POPL 2016
A2 - Rompf, Tiark
A2 - Erwig, Martin
PB - Association for Computing Machinery, Inc
Y2 - 18 January 2016 through 19 January 2016
ER -