2 ms·
Ignorant question: What's Racket's value proposition beyond being a well maintained Lisp? What's this Language of Language thing, and is it so awesome that I'd
by didibus 7y ago
Ignorant question: What's Racket's value proposition beyond being a well maintained Lisp?
What's this Language of Language thing, and is it so awesome that I'd be tempted to learn Racket only for it? Since otherwise its syntax and semantics might be too similar to say Python? (Assuming it drops all the Lispy stuff)
- nudpiedo 7y agoI look a few times to racket in the past. It's distinctive features are: - Pedagogy first: easy to learn, cute visual tutorial with support for desktop UIs, nice tutorials on the language itself and how to learn several aspects of programming such as sockets etc. - Very Easy to write a programming language on top of it by creating a new lisp reader (#lang) which transforms the given code and makes the access to the rest of racket's ecosystem very easy. It is not industry-focused, therefore you might end up frustrated if your main/only goal is to write single web applications or you need good support for commercial libraries, databases etc. On the other hand in software everything is possible so you could always find your way to access those libraries and leverage the existing ecosyste,
- slaymaker1907 7y agoReact is a perfect example of a lot of Racket’s value proposition. JSX is a mini-language created as a way to write XML which interacts bidirectionally with JS in a seamless way. While it takes quite a bit of effort in JS to create all the tooling for this DSL including not only compilation but also making sure it stays editor friendly, creating something equivalent would take an afternoon in Racket including having sensible error messages and syntax highlighting. I chose JSX in particular since it really highlights how useful it can be to have seamless interop between languages. Another really interesting #lang for Racket is Rosette which is IMO the easiest to use interface for SMT solvers out there since the code you write is regular racket (it even supports recursion via symbolic execution).