I am still trying to understand the clear benefits of clojure. I understand that it is a dynamic, [almost] purely functional language that lends itself well to unit testing, concurrency and rapid development.
I was watching this presentation by its founder Rich Hickey.
Around the 25th minute mark, you can see a lot of wonderful ways in which clojure makes programming easy by ability to define lists, and vectors dynamically:
( 123) [123]
ability to use those dynamically defined vectors as functions
([ 123] 0)
ability to call functions on newly defined strings
(.ToUpperCase "foo")
so as Rich puts it, "syntax for the literals is the syntax for the language".. beautiful.
but isn't it possible to do this style of programming in .net 4.0? (albeit more chatty)
(new[] {1,2,3})[0]
"foo".ToUpper()
etc.. .net could also be used to program in a functional way (although it is not enforced)
these are trivial examples, but seems like this is the basis of clojure. What are some features that set clojure more apart, and make it a better choice in some scenarios?