Inspiring a future Clojure editor with forgotten Lisp UX - Shaun Lebron
ClojureTV0 HN recommenders · 2017–2019
23K views · talk · evergreen · Uploaded 2017-10-12
Shaun Lebron surveys 50 years of Lisp editing history and forgotten innovations in structural editing. He argues future Clojure editors could learn from them, and covers ideas like Parinfer.
HN cites it as a summary of known attempts at structural and Lisp editors.
53:22Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim Weirich
Confreaks
38:47RailsConf 2014 - All the Little Things by Sandi Metz
Confreaks
42:03The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
1:01:39"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
25:06"Making Impossible States Impossible" by Richard Feldman
elm-conf
1:31:06William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]
PapersWeLove
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
1:03:55🚀 TDD, Where Did It All Go Wrong (Ian Cooper)
DevTernity Conference
3 comments from Hacker News
This is called 'projectional editing', an idea that to my knowledge goes back to the 60s. A projectional editor shows you both the original source code, and alternate representations (or, 'projections') of it. Given the right plugins and config, these alternate projections could happen to be more intuitive to grasp/edit than the original source code. One plugin could, for example, remove all the unnecessary semicolons. Another, could remove all the unnecessary punctuations and project the code in an indentation-significant way or vice-versa. Your idea to replace all the `'bar' + foo`s with ``bar{foo}``s would also be possible. It's easy to imagine much more advanced use-cases. A sufficiently advanced editor could detect calls to FRP libraries, and project the data flow as a visual graph (picture all the `flatMaps()` and `scanLatest()s` as nodes on that graph). Or, given access to compile-time type info (via a typescript-style language-server), it could overlay the type of a value with the missing fields being shown as slots to be filled. I can imagine such an editor to mostly "obsolete" the idea of a single syntax for each language in the first place. Like the language but not the syntax? Roll your own syntax! Just configure your own editor plugins. No one would have to know. No one would have to agree with your "taste." Not even your git repo [0]. (See /r/nosyntax/ for more ideas) A projectional editor can also be implemented in the runtime, ala Smalltalk. In that case, the
That's a great suggestion. Which attempts are you familiar with? The ones I'm familiar with are summarized in this talk: [VIDEO]
Using a Lisp with Parinfer makes the parens automagic without taking away the benefits they provide. [LINK] [VIDEO]