Installation on my Mac: "brew install clojure", then to start it on the command line, type "clj"
I first heard about Clojure from a presentation Stuart Holloway (referenced several times in this chapter) gave at our university. His excellent talk left me intrigued, and I am glad I had a chance to learn some more.
There are several things that are really interesting about Clojure. It is a functional language with some OO constructs (leaving out inheritance) that runs on the JVM. This gives it the potential for Java (and other JVM language) interoperability, including access to the class libraries. It also gives first-class and modern support for concurrency through Software Transactional Memory, which is an in-memory transaction capability analogous to database transactions that is becoming increasingly popular (Haskell supports it too.)
There are several things that scare me about Clojure. A capability called automatic tail recursion allows functional languages to optimize out the otherwise large stack memory consequences of recursion. The JVM doesn't support this idea, and the Clojure workaround seems very ugly to me. I am not too thrilled about the overall syntax. It seems too Lisp-like for my tastes, and I find Haskell more elegant. Finally, the learning curve for this language appears steep. As a consequence, I only found the time to do the Day 1 homework (which was pretty straightforward) and decided to pass on the remaining challenges.
I first heard about Clojure from a presentation Stuart Holloway (referenced several times in this chapter) gave at our university. His excellent talk left me intrigued, and I am glad I had a chance to learn some more.
There are several things that are really interesting about Clojure. It is a functional language with some OO constructs (leaving out inheritance) that runs on the JVM. This gives it the potential for Java (and other JVM language) interoperability, including access to the class libraries. It also gives first-class and modern support for concurrency through Software Transactional Memory, which is an in-memory transaction capability analogous to database transactions that is becoming increasingly popular (Haskell supports it too.)
There are several things that scare me about Clojure. A capability called automatic tail recursion allows functional languages to optimize out the otherwise large stack memory consequences of recursion. The JVM doesn't support this idea, and the Clojure workaround seems very ugly to me. I am not too thrilled about the overall syntax. It seems too Lisp-like for my tastes, and I find Haskell more elegant. Finally, the learning curve for this language appears steep. As a consequence, I only found the time to do the Day 1 homework (which was pretty straightforward) and decided to pass on the remaining challenges.
I found this quick reference to be very handy:
http://faustus.webatu.com/clj-quick-r...