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
160
How Will Cryptography Survive the Rise of Quantum Computing?
rakhim
0
75
ClojureScript and React without JavaScript
rakhim
3
530
Other Decks in Programming
See All in Programming
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
680
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
390
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.9k
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.9k
My Marp Sample
sinoue0108
0
110
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
AIを紡ぐPMのお話
swdtkuy
0
120
不幸な GC
chencmd
0
550
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
270
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
A designer walks into a library…
pauljervisheath
211
24k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Designing for Timeless Needs
cassininazir
1
450
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
エンジニアに許された特別な時間の終わり
watany
108
250k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Being A Developer After 40
akosma
91
590k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Bash Introduction
62gerente
615
220k
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