Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
What could a Clojure/LISP editor be like?
Search
Rakhim
January 14, 2019
Programming
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What could a Clojure/LISP editor be like?
Rakhim
January 14, 2019
More Decks by Rakhim
See All by Rakhim
Genetic programming is waiting for better tools
rakhim
2
150
How Will Cryptography Survive the Rise of Quantum Computing?
rakhim
0
70
ClojureScript and React without JavaScript
rakhim
3
520
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.5k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
240
Oxlintのカスタムルールの現況
syumai
6
1.2k
どこまでゆるくて許されるのか
tk3fftk
0
280
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
210
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
610
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.4k
Lessons from Spec-Driven Development
simas
PRO
0
230
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
130
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
360
Context Engineering - Making Every Token Count
addyosmani
9
990
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
270
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
350
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
550
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Become a Pro
speakerdeck
PRO
31
6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
Transcript
What could a Clojure editor be like?
Char editor (Notepad, DOS E)
Char editor (Notepad, DOS E) Text editor (vi, emacs, ed)
Char editor (Notepad, DOS E) Text editor (vi, emacs, ed)
Code editor (emacs, acme, vs code, sublime)
Char editor (Notepad, DOS E) Text editor (vi, emacs, ed)
Code editor (emacs, acme, vs code, sublime) Code editor + dev. env. (IDE) (emacs, vs code, atom, IDEA, Eclipse, Xcode, etc)
Char editor (Notepad, DOS E) Text editor (vi, emacs, ed)
Code editor (emacs, acme, vs code, sublime) Code editor + dev. env. (IDE) (emacs, vs code, atom, IDEA, Eclipse, Xcode, etc) Visual programming (Node-RED, Scratch, Modkit, Blocky)
Scratch
Google's Blocky
Node-RED
Luna
Unreal Engine 4 "Blueprints"
Feynman Diagram
• Immediate feedback • Composition • Data flow • Encourages
FP • Reducing accidental complexity Benefits of a visual approach
• Immediate feedback → REPL • Composition → Higher order
functions, natural composability • Data flow → it's just data!™ • Encourages FP → duh! • Reducing accidental complexity → we still have lots In the context of LISP/Clojure
• Function promotion !#(bla %) → (fn [a] (bla a))
→ (defn real-foo [a] (bla a)) • if → cond • wrap in let, promote let • Namespaces, import • Refactoring • Simple: rename, replace function, change order • Complex: change flow, change data structure IDE level complexity Char editor (Notepad, DOS E) Text editor (vi, emacs, ed) Code editor (emacs, acme, vs code, sublime) Code editor + dev. env. (IDE) (emac/cider, IDEA/Cursive, Eclipse, Xcode, etc)
• Not flexible enough • Not expressive enough • Either
too simple or too niche • Mouse! Cons of a visual approach
None
comparator-over-maps comparison-fn ^fn ks ^vec ^fn
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap Ø
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap zipmap
map Ø
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap zipmap
map Ø closure
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap zipmap
map Ø Ø k ^fn
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap zipmap
map Ø Ø k ^fn map apply
comparator-over-maps comparison-fn ^fn ks ^vec ^fn maps ^vec ^hashmap zipmap
map Ø Ø k ^fn map apply ^?
• "Inventing on principle", Brett Victor • "Inspiring a future
Clojure editor with forgotten Lisp UX", Shaun Lebron • ProtoREPL Check out