A generic back-end for exploratory programming
| Authors | |
|---|---|
| Publication date | 2021 |
| Host editors |
|
| Book title | Trends in Functional Programming |
| Book subtitle | 22nd International Symposium, TFP 2021, Virtual Event, February 17–19, 2021 : revised selected papers |
| ISBN |
|
| ISBN (electronic) |
|
| Series | Lecture Notes in Computer Science |
| Event | 22nd Symposium on Trends in Functional Programming |
| Pages (from-to) | 24-43 |
| Publisher | Cham: Springer |
| Organisations |
|
| Abstract |
Exploratory programming is a form of incremental program development in which the programmer can try and compare definitions, receives immediate feedback and can simultaneously experiment with the language, the program and input data. Read-Eval-Print-Loop interpreters (REPLs) and computational notebooks are popular tools for exploratory programming. However, their usability, capabilities and user-friendliness are strongly dependent on the underlying interpreter and, in particular, on the ad hoc engineering required to ready the underlying interpreter for incremental program development. To break this dependency, this paper adopts a principled approach and implements a so-called exploring interpreter as a back-end to support various development environments for exploratory programming.
This paper contributes by presenting a generic Haskell implementation of the exploring interpreter – applicable to a large class of software languages – and demonstrates its usage to develop a variety of interfaces with a shared back-end, including command-line REPLs, computational notebooks and servers with reactive APIs. The design of the back-end is evaluated by defining a variety of interfaces for existing languages, including eFLINT, a domain-specific language for normative reasoning, and Funcons-beta, the language developed by the PLanCompS project to enable component-based operational semantics. |
| Document type | Conference contribution |
| Language | English |
| Published at | https://doi.org/10.1007/978-3-030-83978-9_2 |
| Permalink to this page | |
