Hacker News new | past | comments | ask | show | jobs | submit login

Racket has been rated as 'an acceptable python' by a famous programmer. Well deserved, I think.



Not without quite a few libraries. You need at least rackjure[1] (for threading macros if nothing else) and data/collections[2] (for unified sequence/collection handling and convenient helpers). You might want data/functional[3] for the `do` notation (to replace all the for/... forms; only if you know what you're doing). You will probably need a few srfis - 26 for cut, for example - depending on your preferred coding style and domain.

You won't need external libraries for streams, generators, objects and classes, contracts, graphics and plotting, documentation generation, concurrency, limited parallelism (futures) and multiprocessing (places) - as these are all built-in.

Racket is a great language. I learned it around 2008 and get back to it regularly. However, due to its focus on pedagogy, the defaults tend to be verbose for practical work. The incredible power of `syntax-parse` makes it trivial to build DSLs, but that backfires, because everyone and their cat make DSLs instead of settling on a single set of helper libraries. Packages that require a lot of effort to make, like a numpy/pandas/data-frame implementation, tend to lag behind their counterparts in other languages due to the relatively small community. Without easy access to larger ecosystem that Clojure enjoys it's pretty much impossible for the situation to drastically improve on that front.

Contracts and Typed Racket are still, to my knowledge, the most advanced in their respective fields.

I love Racket. It's my first Lisp, and it'll have a place in my heart until the day it stops beating. However, for practical, day to day coding, that doesn't fit precisely into Racket strengths, it's not as good as any of the top 10 on TIOBE.

[1] https://docs.racket-lang.org/rackjure/index.html

[2] https://docs.racket-lang.org/collections/collections-api.htm...

[3] https://docs.racket-lang.org/functional/interfaces.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: