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

I used Clojure for 2.5 years. Here are my thoughts.

TL;DR: it's an excellent language, but it's dynamically-typed and that can be a pain.

The language itself is pretty simple. The default collection type is a lazy seq, and that takes a little bit of getting used to, but it's actually a great thing. It allows you to compose filters, maps, et al without taking a hit to performance on account of needless copying.

The language's documentation is mediocre, true, but that doesn't matter that much given that learning a new language is a 6-month (at least) investment. Trust me: if you've never used a functional programming language before, it's more than worth your time.

Some of the error messages are useless, mainly because of Java hangover. Clojure is a very pretty and powerful language built on top of an incredibly ugly one. Impedance mismatches are hardly surprising. Again, this is something that takes a few months to get a hang of, but once you've got a handle on it, it isn't so bad. Clojure is amenable to tracing/printf style debugging, which isn't so bad if you structure your code in an intelligent way. Since the language is mostly functional, the path of least resistance usually is intelligent structuring.

Clojure is a great choice if you're disciplined and willing to do, if not full-on TDD, development with a lot of testing involved. You have to unit test; fast-and-sloppy development will cripple you. It's dynamically typed, and I'll probably always prefer static, but if we accept that the static-vs.-dynamic debate remains unresolved (a lot of smart people with great arguments on both sides) I'd have to give it very high marks within the dynamic category. My ideal language would still be a statically-typed one, but Clojure is more than good enough in practice.

Applications are open for YC Winter 2018

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact