Difference between revisions of "Paper/A principled approach to REPL interpreters"
(Created page with "{{cite journal |title=A principled approach to REPL interpreters |first1=L. Thomas |last1=van Binsbergen |first2=Mauricio |last2=Verano Merino |first3=Pierre |last3=Jeanjean |first4=Tijs |last4=van der Storm |first5=Benoit |last5=Combemale |first6=Olivier |last6=Barais |date=November 2020 |location=local page |publisher=ACM SIGPLAN |url=https://dl.acm.org/doi/abs/10.1145/3426428.3426917 |pages=84-100 |issue=Proceeding...") |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
|first2=Mauricio | |first2=Mauricio | ||
|last2=Verano Merino | |last2=Verano Merino | ||
|author-link2=Mauricio Verano Merino | |||
|first3=Pierre | |first3=Pierre | ||
|last3=Jeanjean | |last3=Jeanjean | ||
|first4=Tijs | |first4=Tijs | ||
|last4=van der Storm | |last4=van der Storm | ||
|author-link4=Tijs van der Storm | |||
|first5=Benoit | |first5=Benoit | ||
|last5=Combemale | |last5=Combemale | ||
Line 22: | Line 24: | ||
<noinclude> | <noinclude> | ||
{{#Widget:PDF | |||
|url=https://ltvanbinsbergen.nl/files/papers/onward2020-repls.pdf | |||
|width=800 | |||
|height=900 | |||
}} | |||
There is a video on the paper, please go to the [https://dl.acm.org/doi/abs/10.1145/3426428.3426917 website] or [[:Video/A Principled Approach to REPL Interpreters|A Principled Approach to REPL Interpreters]]<ref>{{:Video/A Principled Approach to REPL Interpreters}}</ref> to see them. | |||
=Abstract= | =Abstract= | ||
Line 30: | Line 38: | ||
The approach is illustrated using three case studies, based on MiniJava, QL (a DSL for questionnaires), and eFLINT (a DSL for normative rules). We expect sequential languages, and the consequent design principles, to be stepping stones towards a better understanding of the essence of REPLs. | The approach is illustrated using three case studies, based on MiniJava, QL (a DSL for questionnaires), and eFLINT (a DSL for normative rules). We expect sequential languages, and the consequent design principles, to be stepping stones towards a better understanding of the essence of REPLs. | ||
The authors also wrote a paper<ref>{{:Paper/Bacatá: A Language Parametric Notebook Generator}}</ref> on a similar subject. | |||
{{PagePostfix | {{PagePostfix |
Latest revision as of 05:12, 6 July 2023
van Binsbergen, L. Thomas; Verano Merino, Mauricio; Jeanjean, Pierre; van der Storm, Tijs; Combemale, Benoit; Barais, Olivier (November 2020). "A principled approach to REPL interpreters" (Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software). local page: ACM SIGPLAN: 84–100.
There is a video on the paper, please go to the website or A Principled Approach to REPL Interpreters[1] to see them.
Abstract
Read-eval-print-loops (REPLs) allow programmers to test out snippets of code, explore APIs, or even incrementally construct code, and get immediate feedback on their actions. However, even though many languages provide a REPL, the relation between the language as is and what is accepted at the REPL prompt is not always well-defined. Furthermore, implementing a REPL for new languages, such as DSLs, may incur significant language engineering cost.
In this paper we survey the domain of REPLs and investigate the (formal) principles underlying REPLs. We identify and define the class of sequential languages, which admit a sound REPL implementation based on a definitional interpreter, and present design guidelines for extending existing language implementations to support REPL-style interfaces (including computational notebooks). The obtained REPLs can then be generically turned into an exploring interpreter, to allow exploration of the user's interaction.
The approach is illustrated using three case studies, based on MiniJava, QL (a DSL for questionnaires), and eFLINT (a DSL for normative rules). We expect sequential languages, and the consequent design principles, to be stepping stones towards a better understanding of the essence of REPLs.
The authors also wrote a paper[2] on a similar subject.
References
- ↑ van Binsbergen, L. Thomas; Verano Merino, Mauricio; Jeanjean, Pierre; van der Storm, Tijs; Combemale, Benoit; Barais, Olivier (November 2020). "A Principled Approach to REPL Interpreters" (Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software). local page: ACM SIGPLAN: 84–100.
- ↑ Verano Merino, Mauricio; Vinju, Jurgen; van der Storm, Tijs (November 9, 2018). "Bacatá: A Language Parametric Notebook Generator" (PDF). local page: 11th ACM SIGPLAN International Conference on Software Language Engineering.
Related Pages