What's so cool about Clojure

Around 5 years ago a colleague of mine tried to spark some interest for Clojure. He described it using terms like functional, higher order functions, pure functions, composable, immutable data, lazy evaluated, code is data and vice versa, macros, concurrency etc. None of which I truly understood at the time but instead felt like buzzwords.

So instead of making me jump on the bandwagon, he left me with the question:

What’s so cool about Clojure?

His enthusiasm and a little 15 minute REPL session showing off some data structures and concurrency made an impression I couldn’t shake. It felt awesome and I couldn’t explain why… I still didn’t have an answer to my question, only a feeling!

After 3 years of naively waiting for Eureka, I realized that I needed to get out of my narrow comfort zone and commit to the learning process. So I decided to take the plunge and I felt good about it. After all I knew I still had a lot to learn - in retrospect that was an understatement.

The more you know, the more you know you don’t know.

  • Aristotle

There was a gap in my knowledge about programming, sometimes entire concepts was unfamiliar other times I had “invented” similar concepts myself without knowing that it was “text book stuff” and it already had a name. To close this gap I needed to start out on familiar ground with something I could relate to and work my way up from there.

I now see that my journey to answer my own question has actually been more about programming in a broad sense than about Clojure as a programming language. The “buzzwords” is starting to make sense and it has got me thinking about how I would have introduced these to my not-knowing-self a few years back. Lately specifically “Lazy sequences”.

I have some notes which might become a blog post in the near future… so stay tuned if you want to know what all the fuzz is about.