Conversation
Edited 12 days ago

first impressions of #Racket seem pretty good! it has some stuff that I don’t like from other Lisps like:

  • a weird pseudo-module system instead of a proper module system
  • an unnecessarily large number of ways to compare values
  • several forms that implicitly add new functions to the namespace

it’s also a very very complex language compared to Janet or Fennel. but the things that I really like about it are:

  • the Racket folks clearly care deeply about people’s first time experience with the language and have made it incredibly smooth and easy in many different ways (they even have a nice, friendly little IDE called DrRacket that comes with every Racket installation)
  • it has easy, out-of-the-box Windows support! (this is pretty rare with Lisps)
  • the documentation is fantastic. it’s not just incredibly thorough and well-explained, it’s also split into {documentation for beginners} and {full and complete documentation for masochists} sections, and everything is heavily linked together with hyperlinks to more documentation that explains things even further

my overall first impression of Racket is that it’s the Python of Lisps: it’s very complex and full-featured, but it also cares deeply about being as easy and friendly for beginners as possible, and I think that’s one of the most important traits for a language to have

1
2
8

a thing about Lisps that I find very beautiful is that you can learn their basic rules (syntax, macros, and execution) very quickly and easily*, and after that point you’ll understand all you need in order to make sense of anyone else’s code (as long as you can look up the forms that they’re using). you’ll never run into a situation where you don’t know what you’re looking at, syntactically speaking - which can happen a lot in non-Lisp languages

but a big complaint that I have about Racket is:

  • compared to other Lisps, it has a lot of special-case syntax
  • there’s no single place in the Racket Guide (the friendly, readable reference guide for Racket) that explains all of the syntax. instead, the syntax is spread throughout the guide
  • there is a single place in the Racket Reference that explains all of the special-case syntax, but the Racket Reference is an extremely dense and challenging read (I’m not entirely sure why they decided to write it this way. it reads more like a formal standard for the language than a reference guide. everything is explained in excruciatingly precise detail and there is a lot of Racket-specific jargon being thrown around as well)

I get the feeling that Racket is overall a very complex and densely-packed language - designed to give users as many options as possible. and I have mixed feelings about that approach. it makes the language less beautiful to me, and harder to learn, but there might be a lot of practical value in doing things that way

* nothing involving programming is quick and easy, but it’s “very quick and easy” compared to learning the equivalent information in almost any other language

0
0
3