8 ms·
I'll always have a soft spot for Racket, because of how the IDE literally draws arrows for you, overlaid on top of the code, linking the various occurrences of
by aragonite 3y ago
I'll always have a soft spot for Racket, because of how the IDE literally draws arrows for you, overlaid on top of the code, linking the various occurrences of a (hovered) variable together.[1][2] Seriously, how cool is that? Alas, it's unclear how to begin to implement such a feature in a performant way in a DOM-based editor like vscode (I'm not a web developer, so maybe I'm wrong about this.)
[1] Example gif: https://docs.racket-lang.org/define-attributes/examplecodearrows.gif https://docs.racket-lang.org/define-attributes/examplecodear...
[2] > Lexical Structure: The lexical structure is shown with arrows overlaid on the program text. When the mouse cursor passes over a variable, DrRacket draws an arrow from the binding location to the variable, or from the binding location to every bound occurrence of the variable.
- ReleaseCandidat 3y agoI don't think you can do that in a "normal" VS Code editor window, but it is possible in a custom one (where you have to do "everything" yourself): https://code.visualstudio.com/api/extension-guides/custom-editors https://code.visualstudio.com/api/extension-guides/custom-ed... (so, not much chance of adding that to my Chez extension ;)
- pjmlp 3y agoThe coolness of Lisp Machines and Interlisp-D, which is where Raket took its inspiration from.
- sitkack 3y agoThe Racket community is just full of wholesome folks and it is contagious. Racket makes more awesomeness in the world.
- jboynyc 3y agoYes, there are many lovely people, but it is best not to romanticize the community as a whole -- it's got some issues, too: https://beautifulracket.com/appendix/why-i-no-longer-contribute-to-racket.html https://beautifulracket.com/appendix/why-i-no-longer-contrib...
- sitkack 3y agoTrue, that wasn't my intent and you are right to draw this out into the open. I have had the pleasure if witness a couple Matthew Butterick talks first hand and they are excellent. He is a great speaker and thinker. I have also seen the subject the article lose his cool a couple times. Which is not cool. Esp given his prominent place in the community. At this point and think he should make himself a bystander.
- mark_l_watson 3y agoI agree. In 1982 I got a Lisp Machine running InterLisp-D, and it was “batteries included” like Racket. If you don’t mind Smalltalk, the modern Pharo ecosystem is also amazing.
- lispm 3y agoNeither of those restarted their Lisp when one pressed a run button. The Lispm IDEs were always running and always in the same environment as the programs. A whole different story.
- pjmlp 3y agoBeing inspired doesn't mean 100% the same experience. Just like Notebooks are miles away from that experience, and yet they allow millions of programmers to have an experience that wouldn't have otherwise, even with Lisp Machines/Interlisp-D providing a much better one.
- lispm 3y agoI still fail to see how the Racket IDE is inspired by Lisp Machines specifically. Do you have any pointers where this is discussed? What do you think is inspired by some Lisp Machine? REPLs existed before. Editors existed before. IDEs existed before. Lisp IDEs existed before. For example Interlisp had a Lisp IDE in the early 70s, long before it was morphed into something like a Lisp Machine with Interlisp-D.
- tkzed49 3y agoNo idea how to do this in a VSCode extension, but you could place a full-screen <canvas> over the whole editor with pointer-events: none. Then, you could use offsetLeft/Top or getBoundingClientRect() on relevant text elements to figure out where to draw lines on the canvas.
- Galanwe 3y agoDid not try Racket specifically, but I did quite a lot of work with Dr. Scheme 15/20 years ago, which I think is Racket's ancestor? It would allow you to define variables which were actual images. The image was a thumbnail in the code, which you could assign and print. It was mind blowing. Also your Lambda keywords could be replaced with an actual Lambda symbol, which was the pinnacle of coolness. This, as well as the super snappy and responsive split REPL, made the overall development experience with Scheme feel super futuristic and just a pure enjoyment all around.
- Y_Y 3y agoIt's got myriad other issues, but Mathematica is a lot like this. You can have "rich" literals like a sound file or and image or a 3d model and see and manipulate along with the source, which has a couple of different levels of syntactic sugar, from being an ugly text-only lisp up to stuff that looks like it comes from a well-illustrated text book. What's missing from my life is a good FOSS equivalent. There are several wonderful tools which do similar things, e.g. Jupyter, org-babel, TeXmacs, Sage, mathics. None of them feel quite right though.
- mark_l_watson 3y agoI once had fantasies about starting an open source project for Common Lisp that would attempt to implement a little bit of the Wolfram data display stuff. I stopped paying for LispWorks, so I no longer have CAPI for GUIs, so that is not going to happen. Racket’s UI support would make Racket a good platform for an open source project like this. (I won’t work on it, LLMs are so much more fascinating than any other tech, and use up my free time). I did recently pay for an entire year of Wolfram Desktop in the hope of really getting into it. I have code experiments for all the stuff I love (machine learning, deep learning, LLM, semantic web, etc.) but to be honest using the Wolfram Language does not give me the joy that I get using Common Lisp,and various Schemes, and, for some things Python is the most practical language.
- bitwize 3y agoHolyC is like this as well.
- BaculumMeumEst 3y agoracket is also one of the very few free lisps with a visual debugger and stepper, which is crazy when you realize how widely available that is in modern languages
- pjmlp 3y agoMost likely because they got students to implement that for their thesis work, and free Common Lisp are seldom used for thesis stuff. Like in many free tooling most people rather do with what they have instead of improving them, hence why all great developer experiences are either commercial or corporate sponsored.
- mbork_pl 3y ago> all great developer experiences are either commercial or corporate sponsored GNU Emacs disagrees.
- spdegabrielle 3y agoI don’t think the arrows are possible with VScode? Someone said they might be possible with CodeMirror https://codemirror.net/ https://codemirror.net/ (Just in general - not specifically for racket- I’d love to see this for rust and elixir)
- ReleaseCandidat 3y ago> I don’t think the arrows are possible with VScode? They are possible, but not using the "normal" editor window, you need a "custom" one: https://code.visualstudio.com/api/extension-guides/custom-editors https://code.visualstudio.com/api/extension-guides/custom-ed...
- spdegabrielle 3y agoSo not completely impossible, just effectively impossible.
- cfiggers 3y agoWhy would doing it in VS Code be any more or less impossible than implementing it from scratch anywhere else?
- mark_l_watson 3y agoI have also have a soft spot for Racket, although professionally I lean on Common Lisp to get stuff done. The once a year RacketCon conference was two weekends ago, and in addition to the technical talks, I enjoyed hearing the 4 academics who are primary implementers and maintainers taking questions from the audience about why Racket is not targeted at industry. I am just finishing up writing a Racket book, that really just consists of my own little code experiments (no big deal). You can read it free online https://leanpub.com/racket-ai/read https://leanpub.com/racket-ai/read
- bmitc 3y ago> I enjoyed hearing the 4 academics who are primary implementers and maintainers taking questions from the audience about why Racket is not targeted at industry. That's interesting. That seems like a flip from a few years ago. What was the summary regarding this?
- mark_l_watson 3y agoMy understanding of what the 4 academic devs were saying: Racket is a rich environment for language experiments, academic work, and is attracting some interest in wider commercial use. I think they hope that more 3rd parties do some of the work for supporting industrial applications. I didn’t take notes of the panel discussion, but this is how I remember the dialog.
- soegaard 3y agoThe question came from a young member of the audience. It was phrased something like: "Why isn't Racket used in industry like OCaml is used by Jane Street." And what can you answer to that? Of course the Racket would like for some both commercial users as well as sponsors. In fact [1] Racket changed its license from LGPL to Apache 2.0 or the MIT license to make sure it can be used commercially. The fact is that language popularity isn't determined by quality of language/implementation alone. Having companies like Apple (Swift) and Google (Go) backing a language helps tremendously. [1] https://blog.racket-lang.org/2019/11/completing-racket-s-relicensing-effort.html https://blog.racket-lang.org/2019/11/completing-racket-s-rel...