I used Racket in an intro to CS course a few years ago and was told it’s designed to be a teaching language. Is there any reason to use racket over a more popular functional language? Does anyone use it in production?
The Racket distribution comes with several languages.
You were probably using the socalled teaching languages, which are small subsets of real Racket. Using a subset of the real language allows better and more beginner friendly error messages.
The real Racket language is a general purpose language with all the bells and whistles you could ever imagine.
The killer feature of racket is it is very easy to make Domain Specific Languages (including the teaching language) and related tooling.
However last time I looked the library ecosystem didn't seem great; there were many libraries but few that were actively maintained.
I think the counterargument is that in large projects, you will end up with DSLs whether you meant to or not. The philosophy of language oriented programming (LOP), as I take it or understand it, is that since you'll end up with them anyway, why not approach and build DSLs explicitly.