Weird nitpick, but "No Makefiles required" is an odd selling point to me. I haven't seen or used a Makefile in eons, and I would wager a decent chunk of programmers never needed to.
I'm not sure how to describe the feeling this creates. Like...I can feel the authors other experiences shine through or something to that effect.
There was a talk awhile ago by John A. De Goes where he asserted roughly that Scala's then pitch of "combines object oriented and functional programming" was basically gobbledygook from the standpoint of "why would I use this language."
I feel much the same way about Racket. Cool, very advanced DSLs and mini languages...what does that give me? What can I do with that?
Most of the page is dedicated to justifying "no wait everyone, we have the bare minimum number of libraries" or waxing poetic about the mini language concept.
What is the reason to use this over a less "lexically powerful" lisp like Clojure? What is the reason to use this over one of the boring old stalwarts like Java or Python?
Can I read from a Kafka queue? Can I call into AWS? Google Cloud? How strong are the libraries, and what would I have to commit to writing myself?
I actually do not understand why I would use Racket, and this page doesn't help.
EDIT: Also, if you want a look at the dialects, check out the comic here: http://landoflisp.com/
Be advised that it is extremely difficult to "sell" Lisp and related languages to someone that hasn't bought the idea yet. No-one seems to have found a winning formula. All people see are the parentheses (although, for some reason, they don't see the ocean of []{}(); in other languages).
The normal experience is: you get tired of hearing about all those people preaching about Lisp(or Scheme) and decide to see for yourself. You take the plunge. You slave away at a book or two (or tutorials) trying to grasp the language. And then, at some point, it all just "clicks" into place and you see the light! That's what's its all about!
But then you start trying to explain it to other people... and you have exactly the same problem. All those features you now know about and can't live without? They are either difficult to explain without explaining more concepts, or they just don't see the value compared to what they are used to. "What do you mean, code is data? Code is not data, I use JSON for that."
Which is understandable. After all, if you are writing Scheme, you can easily see the value. You know how Java can spend years (and sometimes over a decade, see lambda) to get a new language feature? Well, with very few exceptions, you can do it yourself. You know 'for each'? A Scheme(or lisp) programmer could solve that in 5 minutes with a macro. But you can't, because you are not a Lisp programmer yet.
Similarly you probably see no problem at all with having YAML with a C program and maybe a scripting language too. Whereas a Lisp programmer would see that as a waste and just want to use S-Expressions for everything. Sometimes including HTML and CSS representation. And maybe more.
But there's an opportunity cost. Up to you if you want to pay for that.
What convinced me and I found it to be true: Lisp or Scheme (and I guess Haskell) _will_ make you a better programmer even if you don't end up using them in your day to day. It will expose you to concepts that you may not be familiar with - or may not had the opportunity to practice.
This is, again, subjective. Up to you. All programming languages are Turing-complete anyway.
To be clear, I'm no stranger to Lisps. I use Clojure a ton for personal stuff and on occasion have found ways to sneak it in to production.
The difference there is that Clojure isn't responsible for giving a wide enough ecosystem to justify investment, it just yoinks it from Java.
Racket doesn't have that ecosystem and probably never will. Macros on the level of common lisp and clojure are already found in those places. Racket gives, and seems to base it's pitch around, a far more flexible hammer than classic lisp macros.
But it doesn't do anything to offset the downsides of a small community or justify why that more powerful "actual mini language" level DSL is something to care about.
I am well aware of how macros can let you add your own language features and conveniences specific to your project. Homoiconicity is an all around neat property to have.
I'm just not buying a "beating the averages" style "you just see it as blub" explanation either. Mini languages do have niche uses. I acknowledge that. ANTLR wouldn't have users if they didn't. It's just not something I think is worth writing home about.
I'm not sure how to describe the feeling this creates. Like...I can feel the authors other experiences shine through or something to that effect.
There was a talk awhile ago by John A. De Goes where he asserted roughly that Scala's then pitch of "combines object oriented and functional programming" was basically gobbledygook from the standpoint of "why would I use this language."
https://youtu.be/v8IQ-X2HkGE
I feel much the same way about Racket. Cool, very advanced DSLs and mini languages...what does that give me? What can I do with that?
Most of the page is dedicated to justifying "no wait everyone, we have the bare minimum number of libraries" or waxing poetic about the mini language concept.
What is the reason to use this over a less "lexically powerful" lisp like Clojure? What is the reason to use this over one of the boring old stalwarts like Java or Python?
Can I read from a Kafka queue? Can I call into AWS? Google Cloud? How strong are the libraries, and what would I have to commit to writing myself?
I actually do not understand why I would use Racket, and this page doesn't help.