How does Clojure shape your code?

(written by Lawrence Krubner, however indented passages are often quotes)

Interesting:

I have come to realize how the language shapes how I code. Specifically, and this is probably the most meaningful change, is that immutability has forced me to keep each function short, sweet, and to the point. Besides in a few special cases, my functions are typically less than 15 lines, and the majority of the time it comes from a large let block creating bindings (which could probably be replaced with a few -> or ->> functions). Ironically, it seems that immutable functional programming creates less coupling and more cohesion in my code than object oriented programming ever did.

Fortunately, the transition to immutable data structures has been fairly smooth since I programmed in SML/NJ in school and Ruby for the last several years. Working with map and reduce comes second nature as they are natural paradigms in ML and Ruby. Once you get the hang of these, they are incredibly powerful tools. Pretty much every other line of code for me uses map, reduce, or reductions.

Source