A Principled Approach to REPL Interpreters
summary
Claim that REPL behavior follows a sequential language model and that REPL interpreters can be derived by adding a semicolon-like sequential operator to a base definitional interpreter. Implementation reuses Rascal interpreters, connects MiniJava to Jupyter via Bacatá, and adapts an existing Haskell eFLINT interpreter; applied to three case studies (MiniJava, QL, eFLINT) and shown to work, with semantics formalized via a Conf configuration and semantic composition.
AI-written summary · about
chapters (16)
- 0:00Introduction
- 0:39What is REPL
- 2:02Example
- 4:14The Problem
- 4:56Domain Analysis
- 5:27Language Design
- 6:32Sequential Language
- 7:24Semantics
- 7:49Principal Design Pattern
- 8:42Stacks
- 9:51Operations
- 10:15cmd
- 11:51MiniJava
- 12:59Normative Specifications
- 13:29REPLs as Sequential Languages
- 14:15Conclusion
related talks
46mInventing a language (placeholder title)
27mLightweight Semantics Engineering with Redex
23mMacro-embedding Compiler Intermediate Languages in Racket
44mLet's Lisp like it's 1959
35mDeriving an Erlang Interpreter from a Mechanised Formal Semantics of Core Erlang
16mMulti-stage Relational Programming
16mCompiling Symbolic Execution with Staging and Algebraic Effects
09mCompilers for nothing, executables for free!
