[[!meta title="Editor Integrated REPL Driven Development for all languages"]] [[!meta copyright="Copyright © 2023 Musa Al-hassy"]] [[!inline pages="internal(2023/info/eval-nav)" raw="yes"]] # Editor Integrated REPL Driven Development for all languages Musa Al-hassy (he/him) - Pronunciation: moo seh, , [[!inline pages="internal(2023/info/eval-before)" raw="yes"]] Emacs’ C-x C-e is arguably one of its killer features: The ability to run arbitrary Lisp code, anywhere. We demonstrate that the **idea** is portable to other languages [0, 1]. The result is an Emacs interface for any language, where code of your choosing is evaluated, and results are echoed at your cursor in overlays. We will demonstrate how to solve simple problems such as FizzBuzz in a RDD style using, say, Java or any language that the audience chooses. We will also look quickly at "growing programs" such as a photo gallery application, starting from scratch. Along the way, we discuss what features make a RDD system pleasant and how they can be implemented with our system. Finally, we conclude with how this RDD setup allows for inserting results of a computation as a use case for writing tests —i.e., we we show how user-definitions of a read protocol (the 'R' of 'REPL') can result in an analog of C-u C-x C-e. [0] 💐 Repl Driven Development: Editor Integrated REPLs for all languages 🔁 [1] REPL Driven Development :: Teaching a JavaScript runtime, incrementally, to be a web server 🍽️ 🔁 � About the speaker: Musa is an Emacs afficando. His day job is with Java, but his heart is with Lisp. His experience with interactive programming is only with Agda [2] and Emacs Lisp [3], and both [4]. [2] Graphs are to categories as lists are to monoids http://alhassy.com/PathCat.html [3] A Life Configuring Emacs http://alhassy.com/emacs.d/ [4] Making Modules with Meta-Programmed Meta-Primitives http://alhassy.com/next-700-module-systems/prototype/package-former.html [[!inline pages="internal(2023/info/eval-after)" raw="yes"]] [[!inline pages="internal(2023/info/eval-nav)" raw="yes"]]