This week's book giveaway is in the OCAJP forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide 1Z0-808 and have Jeanne Boyarsky & Scott Selikoff on-line! See this thread for details.
Clojure is a functional programming language but not a pure language (not like Haskell).
Scala will absolutely challenging you but you will grasp it faster than Clojure as it blends FP and OOP, Clojure will force you to think functionally immediately.
Both are amazing and absolutely joyful, you aren't going to waste your time if you learned both.
I took the Clojure route
I have been using Scala at work for around 2 years now. While it has been a fairly decent uphill battle, I am fairly confident that Clojure would have been rejected without a thought. Of course, that doesn't mean Clojure is bad. I'm just giving you my guess about my work situation.
I think a big thing that could help Scala is that you can write code that looks a lot like Java. However, as I get more comfortable with Scala, the desire to do things more Scala-like grows;)
A big Scala complaint has been IDE tooling. From what I know, IntelliJ is pretty good, but many people want Eclipse. Supposedly, Scala's creator, Martin Odersky, has recently become personally involved with getting Scala and Eclipse to play nice. For me, I generally do not write Scala code in an IDE. I use Vim + Maven + SBT. However, I use Eclipse to debug Scala code. A co-worker does almost all his Scala development in IntelliJ.
One other thing, I am doing fairly straightforward work with Scala. A lot of times I see Scala mentioned, the conversations seem more Haskell-like than Java-like. I hope this doesn't turn people off to the fact that you can use Scala as Java + some nice control structures + closures, which are things most new languages seem to have.
I think in order to be a much better Scala programmer, you have to play with Haskell for some time (which it is absolutely rewarding).
Same thing can be said about Lisp and Clojure. In fact I bought "Land of Lisp" to get the Lispy sense.
John Todd wrote:I think in order to be a much better Scala programmer, you have to play with Haskell for some time (which it is absolutely rewarding).
I totally agree. I think every programmer should try to get their minds around Haskell. If nothing else, they might be exposed to one of the best programming tutorials on the web (http://learnyouahaskell.com/). Personally, I have dabbled in Haskell (college, Euler problems and XMonad configuration).
I just meant that the Scala community needs to be mindful of the face it's putting forward. In the world of twitter, facebook, etc., it doesn't take much for people to go negative about any particular thing. Unfortunately, being associated with Haskell/Lisp/Lisp-derivatives/etc. might be viewed as a negative. At least for me, it's reality.