summaryrefslogtreecommitdiffstats
path: root/2023/talks/eval.md
blob: 0758cc7afec8c3834b3a9a138515771d7208e901 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
[[!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

# Discussion

## Questions and answers

-   Q: I know that there are many packages for creating graphics with
    Javascript, but I don't know how to use any of them... is it
    possible to use your package to create graphics in Javascript step
    by step from Emacs?
    -   A:
-   Q: Can you summarize what languages your packages support and do you
    have a common framework for interfacing to their interpreters?
    -   A:
-   Q: Did you get the job?  =)  Did the interviewer have any feedback
    about your screen-sharing-driven development?
    -   A:
-   Q: Could you compare your package to Language Servers (LSP)? They
    seem to have similar functionality to your package.
    -   A:

[[!inline pages="internal(2023/info/eval-after)" raw="yes"]]

[[!inline pages="internal(2023/info/eval-nav)" raw="yes"]]