Recs.
Updated
SpecsUpdate
Pros
Pro The most practical functional programming language on the market
Clojure is the most friendly and practical functional programming language simply because it is hosted on the most versatile, battle tested industry strength VM and API's. There is no shortage of libraries on Java to achieve anything and by extension on clojure. Contrary to Haskell or other verification type languages the core belief in clojure community is that programing is about logic and not mathematical proofs, for instance existence of optional parameters in functions are so important to programming but Haskell lacks such practical features.
Pro Ease of use and shallow learning curve
A small intro to clojure should not take more than 2 hours. And that is all the time you need to learn all basic features of clojure. Though the most basic syntax rules can be learnt in around 10 minutes. Infact the most basic rule is quite simple, "operator precedes operand". Haskell may take a few yrs to really understand and master the cryptic syntax, understand type theory and category theory to really appreciate the language and by the time you are done with haskell your kids would have started going to school.
Pro Simplicity as a pillar of culture.
Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures.
Pro Designed for concurrency
Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details.
Pro Good for writing concurrent programs
Since Clojure is designed for concurrency, it offers things like Software Transaction Memory, functional programming without side-effects and immutable data structures right out of the box. This means that the development team can focus their energies on developing features instead of concurrency details.
Pro Tries to solve problems as simply as possible
Simplicity is one of the pillars on which Clojure is built. Clojure tries to solve many problems in software development as simply as possible. Instead of building complex interfaces, objects or factories, it uses immutability and simple data structures.
Pro Immutability is the default
Clojure programmers are highly encouraged to use immutable data in their code. Therefore, most data will be immutable by default.
State change is handled by functions (for transformations) and atoms (an abstraction that encapsulates the idea of some entity having an identity).
Pro One language to rule them all
Clojure is an extremely versatile programming language you can use the same language to write the backend web services as well as the frontend web interface. Infact the single best frontend library ever written is reagent with clojurescript. Clojurescript fits the immutable, functional, dataflow style of react so well that a moderately complex frontend app written in clojurescript with reagent outperforms a React App written in vanilla Javascript. Plus you can write mobile apps too with clojurescript.
Cons
Con Syntax can be alien / jarring for those used to other Lisps
Perhaps some may consider this attribute an advantage, but I do not. Clojure does not attempt to maintain significant compatibility with other Lisps. So, if you already know a Lisp or are used to the way Lisp works in general, you'll probably be confused if you take a look at Clojure. See these resources for more details on this subject: