> Of existing languages, Racket (paired with Typed Racket) probably comes closest to what I feel is the sweet spot for language design, and it may explain why I seem to pick it more than most other languages when
given a choice.
Racket is great, and I'm coming to appreciate it more as I spend my spare time with it. I didn't really start enjoying it until I stopped trying to pretend it was Python with delimiters. Expressions are fundamental to Racket in a way that goes way beyond syntax.
> Expressions are fundamental to Racket in a way that goes way beyond syntax.
This is typical of all (truly) functional languages, in my experience. They are expression-oriented rather than statement-oriented. You'll find similar behavior in, e.g., OCaml and Haskell. And since it was inspired by OCaml, you'll also find that Rust has an interesting expression-oriented approach to imperative programming, where they have essentially adopted the idea that "statements" are just unit-producing expressions that can be sequenced.
> Of existing languages, Racket (paired with Typed Racket) probably comes closest to what I feel is the sweet spot for language design, and it may explain why I seem to pick it more than most other languages when given a choice.
Racket is great, and I'm coming to appreciate it more as I spend my spare time with it. I didn't really start enjoying it until I stopped trying to pretend it was Python with delimiters. Expressions are fundamental to Racket in a way that goes way beyond syntax.