Clojure vs other Lisps [closed]

My personal list of reasons for preferring Clojure to other Lisps (p.s. I still think all Lisps are great!):

  • Runs on the JVM – hence gets automatic access to the fantastic engineering in the JVM itself (advanced garbage collection algorithms, HotSpot JIT optimisation etc.)

  • Very good Java interoperability – provides compatibility with the huge range of libraries in the Java/JVM language ecosystem. I have used Clojure as a “glue” language to connect different Java libraries with good effect. As I also develop a lot of Java code it is helpful for me that Clojure integrates well with Java tooling (e.g. I use Maven, Eclipse with Counterclockwise plugin for my Clojure development)

  • Nice syntax for vectors [1 2 3], maps {:bob 10, :jane 15} and sets #{"a" "b" "c"} – I consider these pretty essential tools for modern programming (in addition to lists of course!)

  • I personally like the use of square brackets for binding forms: e.g. (defn foo [a b] (+ a b)) – I think it makes code a bit clearer to read.

  • Emphasis on lazy, functional programming with persistent, immutable data structures – in particular all the core Clojure library is designed to support this by default

  • Excellent STM implementation for multi-core concurrency. I believe Clojure has the best concurrency story of any language at the moment (see this video for more elaboration by Rich Hickey himself)

  • It’s a Lisp-1 (like Scheme), which I personally prefer (I think in a functional language it makes sense to keep functions and data in the same namespace)

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)