dev-resources.site
for different kinds of informations.
Scheming About Clojure
Clojure is a LISP for the Java Virtual Machine (JVM). As a schemer, I wondered if I should give Clojure a go professionally. After all, I enjoy Rich Hickey's talks and even Uncle Bob is a Clojure fan. So I considered strength and weaknesses from my point of view:
Pros
- S-Expressions
- Makes functional programming easy
- Schemy naming with
?
and!
suffixes - Integrated testing framework
- Platform independence due to JVM
- Simple Java interoperability
- Clojure map type corresponds to JSON
- Web-server abstraction with extensions (Ring)
- Dedicated Ubuntu-based Docker image
Cons
- Too many core functions
- Too many concurrency concepts
- Having collection functions and the sequence API is confusing
- Keywords feels unnecessary, given symbols
- Unwieldy default project structure
- Leiningen feels forced upon you
- Clojure is not just a single jar (anymore)
- No integrated JSON parser
Insight
Clojure seems good enough. It is not flawless and somewhat overloaded, but far, far ahead of Javascript, Python, Go, or Rust. Of course, I would always prefer CHICKEN Scheme for any passion project. But in an environment that already runs databases written in Java, the JVM has street cred, and a large community hints at sustainability, Clojure presents itself as well balanced in novelty and stability. All in all, Clojure seems to be the enterprise Lisp.
References
Featured ones: