summaryrefslogtreecommitdiffstats
path: root/2023/talks/eval.md
blob: 1accf9d84f773c3cd0dcdc8d20353fcfeb8343d7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
[[!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"]]

<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Editor Integrated REPL Driven Development for all languages
Musa Al-hassy (he/him) - Pronunciation: moo seh, <http://alhassy.com/> <https://github.com/alhassy>, <mailto:Alhassy@gmail.com>

[[!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 &#x2014;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 🔁

<http://alhassy.com/repl-driven-development>

[1] REPL Driven Development :: Teaching a JavaScript runtime,
incrementally, to be a web server 🍽️ 🔁 �

<https://youtu.be/b6Z3NQVn4lY?si=MTMJDSdzszhbA267>

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"]]